800 |
Is there a possibility to expand / collapse all groups (or group by group) at runtime with a method (equivalent to pressing the + or - button in the group header)
with Grid1 do begin BeginUpdate(); ColumnAutoResize := False; rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset); with rs do begin Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb',3,3,Null); end; DataSource := (IUnknown(rs) as ADODB_TLB.Recordset); SortBarVisible := True; SortBarCaption := 'Drag a <b>column</b> header here to group by that column.'; AllowGroupBy := True; Columns.Item[OleVariant(1)].SortOrder := EXGRIDLib_TLB.SortAscending; EndUpdate(); BeginUpdate(); EnsureVisibleColumn(OleVariant(0)); with Items do begin ExpandItem[FirstVisibleItem] := False; end; EndUpdate(); end |
799 |
Is there any public method to export the selected data
with Grid1 do begin BeginUpdate(); with Columns do begin Add('C1'); (IUnknown(Add('C2')) as EXGRIDLib_TLB.Column).FormatColumn := '1 index `A-Z`'; (IUnknown(Add('C3')) as EXGRIDLib_TLB.Column).FormatColumn := '100 index ``'; end; with Items do begin AddItem('Item 1'); SelectItem[AddItem('Item 2')] := True; AddItem('Item 3'); end; EndUpdate(); OutputDebugString( 'Export CSV Selected Items Only:' ); OutputDebugString( Export('','sel') ); end |
798 |
How do I enable the scrollbar-extension, as thumb to be shown outside of the control's client area
with Grid1 do begin BeginUpdate(); ScrollBars := EXGRIDLib_TLB.exDisableBoth; ScrollPartVisible[EXGRIDLib_TLB.exVScroll,EXGRIDLib_TLB.exExtentThumbPart] := True; ScrollPartVisible[EXGRIDLib_TLB.exHScroll,EXGRIDLib_TLB.exExtentThumbPart] := True; ScrollPartVisible[EXGRIDLib_TLB.ScrollBarEnum($2),EXGRIDLib_TLB.exExtentThumbPart] := True; ScrollWidth := 4; Background[EXGRIDLib_TLB.exVSBack] := $f0f0f0; Background[EXGRIDLib_TLB.exVSThumb] := $808080; ScrollHeight := 4; Background[EXGRIDLib_TLB.exHSBack] := Background[EXGRIDLib_TLB.exVSBack]; Background[EXGRIDLib_TLB.exHSThumb] := Background[EXGRIDLib_TLB.exVSThumb]; Background[EXGRIDLib_TLB.exScrollSizeGrip] := Background[EXGRIDLib_TLB.exVSBack]; EndUpdate(); end |
797 |
I need to format a Column with Currency Format, but we use we are using Dhirams (AED)for the Amount. How to do this
with Grid1 do begin BeginUpdate(); MarkSearchColumn := False; with Columns do begin Add('Name'); with (IUnknown(Add('Currency')) as EXGRIDLib_TLB.Column) do begin SortType := EXGRIDLib_TLB.SortNumeric; AllowSizing := False; Width := 64; FormatColumn := 'currency(value)'; end; with (IUnknown(Add('Format')) as EXGRIDLib_TLB.Column) do begin SortType := EXGRIDLib_TLB.SortNumeric; AllowSizing := False; Width := 64; FormatColumn := '`AED ` + (value format ``)'; end; end; with Items do begin h := AddItem('Value 1'); CellValue[OleVariant(h),OleVariant(1)] := OleVariant(10); CellValue[OleVariant(h),OleVariant(2)] := OleVariant(10); h := AddItem('Value 2'); CellValue[OleVariant(h),OleVariant(1)] := OleVariant(20); CellValue[OleVariant(h),OleVariant(2)] := OleVariant(20); end; EndUpdate(); end |
796 |
How can I have a case-insensitive filter (exFilterDoCaseSensitive flag is not set)
with Grid1 do begin BeginUpdate(); MarkSearchColumn := False; with Columns do begin with (IUnknown(Add('Car')) as EXGRIDLib_TLB.Column) do begin DisplayFilterButton := True; FilterType := EXGRIDLib_TLB.exFilter; Filter := 'MAZDA'; end; with (IUnknown(Add('Equipment')) as EXGRIDLib_TLB.Column) do begin DisplayFilterButton := True; DisplayFilterPattern := False; CustomFilter := 'Air Bag||*Air Bag*|||Air condition||*Air condition*|||ABS||*ABS*|||ESP||*ESP*'; FilterType := EXGRIDLib_TLB.exPattern; Filter := 'AIR BAG'; end; end; with Items do begin CellValue[OleVariant(AddItem('Mazda')),OleVariant(1)] := 'Air Bag'; CellValue[OleVariant(AddItem('Toyota')),OleVariant(1)] := 'Air Bag,Air condition'; CellValue[OleVariant(AddItem('Ford')),OleVariant(1)] := 'Air condition'; CellValue[OleVariant(AddItem('Nissan')),OleVariant(1)] := 'Air Bag,ABS,ESP'; CellValue[OleVariant(AddItem('Mazda')),OleVariant(1)] := 'Air Bag, ABS,ESP'; CellValue[OleVariant(AddItem('Mazda')),OleVariant(1)] := 'ABS,ESP'; end; ApplyFilter(); EndUpdate(); end |
795 |
How can I have a case-sensitive filter
with Grid1 do begin BeginUpdate(); MarkSearchColumn := False; with Columns do begin with (IUnknown(Add('Car')) as EXGRIDLib_TLB.Column) do begin DisplayFilterButton := True; FilterType := Integer(EXGRIDLib_TLB.exFilterDoCaseSensitive) Or Integer(EXGRIDLib_TLB.exFilter); Filter := 'Mazda'; end; with (IUnknown(Add('Equipment')) as EXGRIDLib_TLB.Column) do begin DisplayFilterButton := True; DisplayFilterPattern := False; CustomFilter := 'Air Bag||*Air Bag*|||Air condition||*Air condition*|||ABS||*ABS*|||ESP||*ESP*'; FilterType := Integer(EXGRIDLib_TLB.exFilterDoCaseSensitive) Or Integer(EXGRIDLib_TLB.exPattern); Filter := 'Air Bag'; end; end; with Items do begin CellValue[OleVariant(AddItem('Mazda')),OleVariant(1)] := 'Air Bag'; CellValue[OleVariant(AddItem('Toyota')),OleVariant(1)] := 'Air Bag,Air condition'; CellValue[OleVariant(AddItem('Ford')),OleVariant(1)] := 'Air condition'; CellValue[OleVariant(AddItem('Nissan')),OleVariant(1)] := 'Air Bag,ABS,ESP'; CellValue[OleVariant(AddItem('Mazda')),OleVariant(1)] := 'Air Bag, ABS,ESP'; CellValue[OleVariant(AddItem('Mazda')),OleVariant(1)] := 'ABS,ESP'; end; ApplyFilter(); EndUpdate(); end |
794 |
How can I exclude an item from aggregate/total computation
with Grid1 do begin (IUnknown(Columns.Add('Default')) as EXGRIDLib_TLB.Column).Def[EXGRIDLib_TLB.exCellValueFormat] := OleVariant(1); with Items do begin LockedItemCount[EXGRIDLib_TLB.exTop] := 1; h := LockedItem[EXGRIDLib_TLB.exTop,0]; CellValue[OleVariant(h),OleVariant(0)] := 'sum(all,rec,%0)'; CellValueFormat[OleVariant(h),OleVariant(0)] := Integer(EXGRIDLib_TLB.exTotalField) Or Integer(EXGRIDLib_TLB.exHTML); FormatCell[OleVariant(h),OleVariant(0)] := '`Sum: ` + (value format ``) '; AddItem(OleVariant(10)); h := AddItem(OleVariant(20)); SortableItem[h] := False; FormatCell[OleVariant(h),OleVariant(0)] := 'value + ` <fgcolor=808080> this item is excluded from aggregate computations</fgcolor>`'; AddItem(OleVariant(30)); end; end |
793 |
Is is possible to change the default group header to display sum rather than count
with Grid1 do begin BeginUpdate(); HasLines := EXGRIDLib_TLB.exNoLine; ColumnAutoResize := False; rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset); with rs do begin Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb',3,3,Null); end; DataSource := (IUnknown(rs) as ADODB_TLB.Recordset); SingleSort := False; SortBarVisible := True; AllowGroupBy := True; Columns.Item[OleVariant(6)].AllowGroupBy := False; with Columns.Item[OleVariant(1)] do begin GroupByFormatCell := '''<caption> (sum: <b>'' + value + ''</b>, of Freight)'''; GroupByTotalField := 'sum(current,rec,%6)'; SortOrder := True; end; EndUpdate(); end |
792 |
How do I get the caption of the group during the AddGroupItem event
// AddGroupItem event - Occurs after a new Group Item has been inserted to Items collection. procedure TForm1.Grid1AddGroupItem(ASender: TObject; Item : HITEM); begin with Grid1 do begin with Items do begin OutputDebugString( 'Caption:' ); OutputDebugString( CellCaption[OleVariant(Item),OleVariant(GroupItem[Item])] ); OutputDebugString( 'Value:' ); OutputDebugString( CellValue[OleVariant(Item),OleVariant(GroupItem[Item])] ); end; end end; with Grid1 do begin BeginUpdate(); HasLines := EXGRIDLib_TLB.exNoLine; ColumnAutoResize := False; rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset); with rs do begin Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb',3,3,Null); end; DataSource := (IUnknown(rs) as ADODB_TLB.Recordset); SingleSort := False; SortBarVisible := True; AllowGroupBy := True; with Columns.Item[OleVariant(1)] do begin GroupByFormatCell := '''<b><caption></b> ('' + value + '') group'''; SortOrder := True; end; EndUpdate(); end |
791 |
Is it possible, to add more aggregate functions to grouping header
// AddGroupItem event - Occurs after a new Group Item has been inserted to Items collection. procedure TForm1.Grid1AddGroupItem(ASender: TObject; Item : HITEM); begin with Grid1 do begin with Items do begin FormatCell[OleVariant(Item),OleVariant(GroupItem[Item])] := 'value + ` Min: <b>` + %13 + `</b> Max: <b>` + %14 + `</b> Sum: <b>` + %15 + `</b>, of Freight column`'; CellValue[OleVariant(Item),'Min'] := 'min(current,all,dbl(%6))'; CellValueFormat[OleVariant(Item),'Min'] := EXGRIDLib_TLB.exTotalField; CellValue[OleVariant(Item),'Max'] := 'max(current,all,dbl(%6))'; CellValueFormat[OleVariant(Item),'Max'] := EXGRIDLib_TLB.exTotalField; CellValue[OleVariant(Item),'Sum'] := 'sum(current,all,dbl(%6))'; CellValueFormat[OleVariant(Item),'Sum'] := EXGRIDLib_TLB.exTotalField; end; end end; // Change event - Occurs when the user changes the cell's content. procedure TForm1.Grid1Change(ASender: TObject; Item : HITEM;ColIndex : Integer;var NewValue : OleVariant); begin with Grid1 do begin Refresh(); end end; with Grid1 do begin BeginUpdate(); HasLines := EXGRIDLib_TLB.exNoLine; ColumnAutoResize := False; rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset); with rs do begin Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb',3,3,Null); end; DataSource := (IUnknown(rs) as ADODB_TLB.Recordset); SingleSort := False; SortBarVisible := True; AllowGroupBy := True; Columns.Item[OleVariant(1)].SortOrder := True; with Columns do begin (IUnknown(Add('Min')) as EXGRIDLib_TLB.Column).Visible := False; (IUnknown(Add('Max')) as EXGRIDLib_TLB.Column).Visible := False; (IUnknown(Add('Sum')) as EXGRIDLib_TLB.Column).Visible := False; end; EndUpdate(); end |
790 |
Is it possible to display more aggregate functions to a single cell (method 2)
// Change event - Occurs when the user changes the cell's content. procedure TForm1.Grid1Change(ASender: TObject; Item : HITEM;ColIndex : Integer;var NewValue : OleVariant); begin with Grid1 do begin Refresh(); end end; with Grid1 do begin BeginUpdate(); SortOnClick := EXGRIDLib_TLB.exNoSort; LinesAtRoot := EXGRIDLib_TLB.exGroupLinesOutside; Indent := 13; HeaderVisible := False; LinesAtRoot := EXGRIDLib_TLB.exLinesAtRoot; with Columns do begin Add('Items'); (IUnknown(Add('Quantity')) as EXGRIDLib_TLB.Column).Editor.EditType := EXGRIDLib_TLB.SpinType; (IUnknown(Add('Sum')) as EXGRIDLib_TLB.Column).Visible := False; (IUnknown(Add('Min')) as EXGRIDLib_TLB.Column).Visible := False; (IUnknown(Add('Max')) as EXGRIDLib_TLB.Column).Visible := False; end; with Items do begin h := AddItem('Items'); CellMerge[OleVariant(h),OleVariant(0)] := OleVariant(1); FormatCell[OleVariant(h),OleVariant(0)] := '`Items, <b>sum(` + %2 + `), min(` + %3 + `), max(` + %4 + `)</b>`'; CellValueFormat[OleVariant(h),OleVariant(0)] := EXGRIDLib_TLB.exHTML; CellValue[OleVariant(h),OleVariant(2)] := 'sum(current,dir,dbl(%1))'; CellValueFormat[OleVariant(h),OleVariant(2)] := EXGRIDLib_TLB.exTotalField; CellValue[OleVariant(h),OleVariant(3)] := 'min(current,dir,dbl(%1))'; CellValueFormat[OleVariant(h),OleVariant(3)] := EXGRIDLib_TLB.exTotalField; CellValue[OleVariant(h),OleVariant(4)] := 'max(current,dir,dbl(%1))'; CellValueFormat[OleVariant(h),OleVariant(4)] := EXGRIDLib_TLB.exTotalField; CellValue[OleVariant(InsertItem(h,Null,'Item 1')),OleVariant(1)] := OleVariant(10); CellValue[OleVariant(InsertItem(h,Null,'Item 2')),OleVariant(1)] := OleVariant(20); CellValue[OleVariant(InsertItem(h,Null,'Item 3')),OleVariant(1)] := OleVariant(30); ExpandItem[h] := True; end; EndUpdate(); end |
789 |
How can I use the current in the aggregate/total field
// Change event - Occurs when the user changes the cell's content. procedure TForm1.Grid1Change(ASender: TObject; Item : HITEM;ColIndex : Integer;var NewValue : OleVariant); begin with Grid1 do begin Refresh(); end end; with Grid1 do begin BeginUpdate(); SortOnClick := EXGRIDLib_TLB.exNoSort; LinesAtRoot := EXGRIDLib_TLB.exGroupLinesOutside; Indent := 13; HeaderVisible := False; LinesAtRoot := EXGRIDLib_TLB.exLinesAtRoot; with Columns do begin Add('Items'); (IUnknown(Add('Quantity')) as EXGRIDLib_TLB.Column).Editor.EditType := EXGRIDLib_TLB.SpinType; end; with Items do begin h := AddItem('Items'); CellValue[OleVariant(h),OleVariant(1)] := 'sum(current,dir,dbl(%1))'; CellValueFormat[OleVariant(h),OleVariant(1)] := EXGRIDLib_TLB.exTotalField; FormatCell[OleVariant(h),OleVariant(1)] := '`Total: `+ value'; CellValue[OleVariant(InsertItem(h,Null,'Item 1')),OleVariant(1)] := OleVariant(10); CellValue[OleVariant(InsertItem(h,Null,'Item 2')),OleVariant(1)] := OleVariant(20); CellValue[OleVariant(InsertItem(h,Null,'Item 3')),OleVariant(1)] := OleVariant(30); ExpandItem[h] := True; end; EndUpdate(); end |
788 |
How can I prevent a specified item to be not included in the aggregate/total function
// Change event - Occurs when the user changes the cell's content. procedure TForm1.Grid1Change(ASender: TObject; Item : HITEM;ColIndex : Integer;var NewValue : OleVariant); begin with Grid1 do begin Refresh(); end end; with Grid1 do begin BeginUpdate(); DrawGridLines := EXGRIDLib_TLB.exAllLines; SortOnClick := EXGRIDLib_TLB.exNoSort; LinesAtRoot := EXGRIDLib_TLB.exGroupLinesOutside; HasLines := EXGRIDLib_TLB.exThinLine; HeaderVisible := False; (IUnknown(Columns.Add('Numbers')) as EXGRIDLib_TLB.Column).Editor.EditType := EXGRIDLib_TLB.SpinType; with Items do begin h := AddItem('Numbers'); CellEditorVisible[OleVariant(h),OleVariant(0)] := EXGRIDLib_TLB.exEditorHidden; ItemBold[InsertItem(h,Null,OleVariant(10))] := True; ItemBold[InsertItem(h,Null,OleVariant(20))] := True; ItemBold[InsertItem(h,Null,OleVariant(30))] := True; h1 := InsertItem(h,Null,'not included'); CellEditorVisible[OleVariant(h1),OleVariant(0)] := EXGRIDLib_TLB.exEditorHidden; CellValueFormat[OleVariant(h1),OleVariant(0)] := EXGRIDLib_TLB.exHTML; CellHAlignment[OleVariant(h1),OleVariant(0)] := EXGRIDLib_TLB.RightAlignment; SortableItem[h1] := False; h1 := InsertItem(0,Null,'sum(all,rec,dbl(%0))'); ItemBold[h1] := True; SelectableItem[h1] := False; CellValueFormat[OleVariant(h1),OleVariant(0)] := Integer(EXGRIDLib_TLB.exTotalField) Or Integer(EXGRIDLib_TLB.exHTML); FormatCell[OleVariant(h1),OleVariant(0)] := '`Sum: ` + value'; ExpandItem[h] := True; end; EndUpdate(); end |
787 |
Is is possible to specify which items/cells/fields to be included by the aggregate/total function I am using
// AddItem event - Occurs after a new Item has been inserted to Items collection. procedure TForm1.Grid1AddItem(ASender: TObject; Item : HITEM); begin with Grid1 do begin Items.SortableItem[Item] := False; end end; // CellStateChanged event - Fired after cell's state has been changed. procedure TForm1.Grid1CellStateChanged(ASender: TObject; Item : HITEM;ColIndex : Integer); begin with Grid1 do begin with Items do begin SortableItem[Item] := False; end; Refresh(); end end; // Change event - Occurs when the user changes the cell's content. procedure TForm1.Grid1Change(ASender: TObject; Item : HITEM;ColIndex : Integer;var NewValue : OleVariant); begin with Grid1 do begin Refresh(); end end; with Grid1 do begin BeginUpdate(); TreeColumnIndex := -1; FullRowSelect := EXGRIDLib_TLB.exColumnSel; DrawGridLines := EXGRIDLib_TLB.exAllLines; SortOnClick := EXGRIDLib_TLB.exNoSort; (IUnknown(Columns.Add('Check Numbers')) as EXGRIDLib_TLB.Column).Editor.EditType := EXGRIDLib_TLB.SpinType; with Items do begin CellHasCheckBox[OleVariant(AddItem(OleVariant(10))),OleVariant(0)] := True; h := AddItem(OleVariant(20)); CellHasCheckBox[OleVariant(h),OleVariant(0)] := True; CellState[OleVariant(h),OleVariant(0)] := 1; CellHasCheckBox[OleVariant(AddItem(OleVariant(30))),OleVariant(0)] := True; h := AddItem('sum(all,rec,dbl(%0))'); SelectableItem[h] := False; CellValueFormat[OleVariant(h),OleVariant(0)] := Integer(EXGRIDLib_TLB.exTotalField) Or Integer(EXGRIDLib_TLB.exHTML); FormatCell[OleVariant(h),OleVariant(0)] := '`sum on checked items : ` + value'; end; EndUpdate(); end |
786 |
Can I display multiple total/aggregate functions such as sum, min or max, into a single cell (method 1)
// Change event - Occurs when the user changes the cell's content. procedure TForm1.Grid1Change(ASender: TObject; Item : HITEM;ColIndex : Integer;var NewValue : OleVariant); begin with Grid1 do begin Refresh(); end end; with Grid1 do begin BeginUpdate(); TreeColumnIndex := -1; FullRowSelect := EXGRIDLib_TLB.exColumnSel; DrawGridLines := EXGRIDLib_TLB.exAllLines; (IUnknown(Columns.Add('Numbers')) as EXGRIDLib_TLB.Column).Editor.EditType := EXGRIDLib_TLB.SpinType; with Items do begin AddItem(OleVariant(10)); AddItem(OleVariant(20)); AddItem(OleVariant(30)); h := AddItem('sum(all,rec,dbl(%0))'); SelectableItem[h] := False; CellValueFormat[OleVariant(h),OleVariant(0)] := Integer(EXGRIDLib_TLB.exTotalField) Or Integer(EXGRIDLib_TLB.exHTML); FormatCell[OleVariant(h),OleVariant(0)] := '`sum: ` + value'; h := SplitCell[OleVariant(h),OleVariant(0)]; CellValue[OleVariant(0),OleVariant(h)] := 'min(all,rec,dbl(%0))'; CellValueFormat[OleVariant(0),OleVariant(h)] := Integer(EXGRIDLib_TLB.exTotalField) Or Integer(EXGRIDLib_TLB.exHTML); FormatCell[OleVariant(0),OleVariant(h)] := '`min: ` + value'; h := SplitCell[OleVariant(0),OleVariant(h)]; CellValue[OleVariant(0),OleVariant(h)] := 'max(all,rec,dbl(%0))'; CellValueFormat[OleVariant(0),OleVariant(h)] := Integer(EXGRIDLib_TLB.exTotalField) Or Integer(EXGRIDLib_TLB.exHTML); FormatCell[OleVariant(0),OleVariant(h)] := '`max: ` + value'; end; EndUpdate(); end |
785 |
How can I use the index of the item in total/aggregate functions, rather than root or parent
// Change event - Occurs when the user changes the cell's content. procedure TForm1.Grid1Change(ASender: TObject; Item : HITEM;ColIndex : Integer;var NewValue : OleVariant); begin with Grid1 do begin Refresh(); end end; with Grid1 do begin BeginUpdate(); TreeColumnIndex := -1; FullRowSelect := EXGRIDLib_TLB.exColumnSel; (IUnknown(Columns.Add('Numbers')) as EXGRIDLib_TLB.Column).Editor.EditType := EXGRIDLib_TLB.SpinType; with (IUnknown(Columns.Add('Idx')) as EXGRIDLib_TLB.Column) do begin FormatColumn := '0 index ``'; Width := 24; AllowSizing := False; Enabled := False; end; with Items do begin h := AddItem('3 Numbers'); ItemHeight[h] := 0; SelectableItem[h] := False; InsertItem(h,Null,OleVariant(10)); InsertItem(h,Null,OleVariant(20)); InsertItem(h,Null,OleVariant(30)); ExpandItem[h] := True; h := AddItem('sum(0,dir,dbl(%0))'); CellValueFormat[OleVariant(h),OleVariant(0)] := Integer(EXGRIDLib_TLB.exTotalField) Or Integer(EXGRIDLib_TLB.exHTML); SelectableItem[h] := False; FormatCell[OleVariant(h),OleVariant(0)] := '`sum of first three numbers is ` + value'; h := AddItem('3 Numbers'); ItemHeight[h] := 0; SelectableItem[h] := False; InsertItem(h,Null,OleVariant(15)); InsertItem(h,Null,OleVariant(35)); ExpandItem[h] := True; h := AddItem('count(5,dir,dbl(%0))'); CellValueFormat[OleVariant(h),OleVariant(0)] := Integer(EXGRIDLib_TLB.exTotalField) Or Integer(EXGRIDLib_TLB.exHTML); SelectableItem[h] := False; FormatCell[OleVariant(h),OleVariant(0)] := '`count of next two numbers is ` + value'; end; EndUpdate(); end |
784 |
How can I have a better view of what current, parent, all, dir or rec means in total/aggregate fields
// Change event - Occurs when the user changes the cell's content. procedure TForm1.Grid1Change(ASender: TObject; Item : HITEM;ColIndex : Integer;var NewValue : OleVariant); begin with Grid1 do begin Refresh(); end end; with Grid1 do begin BeginUpdate(); LinesAtRoot := EXGRIDLib_TLB.exGroupLinesAtRoot; (IUnknown(Columns.Add('Numbers')) as EXGRIDLib_TLB.Column).Editor.EditType := EXGRIDLib_TLB.SpinType; with Items do begin h := AddItem(''); CellValue[OleVariant(h),OleVariant(0)] := 'sum(current,dir,dbl(%0))'; CellValueFormat[OleVariant(h),OleVariant(0)] := Integer(EXGRIDLib_TLB.exTotalField) Or Integer(EXGRIDLib_TLB.exHTML); FormatCell[OleVariant(h),OleVariant(0)] := '''sum of <fgcolor=FF0000><b>Direct</b> children: ''+value + `</fgcolor> using <a>sum(current,dir,dbl(%0))`'; ItemForeColor[InsertItem(h,Null,OleVariant(10))] := $ff; ItemForeColor[InsertItem(h,Null,OleVariant(20))] := $ff; ItemForeColor[InsertItem(h,Null,OleVariant(30))] := $ff; ExpandItem[h] := True; end; with Items do begin h := AddItem(''); CellValue[OleVariant(h),OleVariant(0)] := 'sum(current,rec,dbl(%0))'; CellValueFormat[OleVariant(h),OleVariant(0)] := Integer(EXGRIDLib_TLB.exTotalField) Or Integer(EXGRIDLib_TLB.exHTML); FormatCell[OleVariant(h),OleVariant(0)] := '''sum of <fgcolor=00FF00><b>Leaf</b> chidlren: ''+value +`</fgcolor> using <a>sum(current,rec,dbl(%0))`'; ItemForeColor[InsertItem(InsertItem(InsertItem(InsertItem(h,Null,OleVariant(100)),Null,OleVariant(10)),Null,OleVariant(10)),Null,OleVariant(1))] := $ff00; ItemForeColor[InsertItem(InsertItem(h,Null,OleVariant(200)),Null,OleVariant(2))] := $ff00; ItemForeColor[InsertItem(InsertItem(h,Null,OleVariant(300)),Null,OleVariant(3))] := $ff00; h1 := InsertItem(h,Null,'sum(parent,direct,%0)'); CellValueFormat[OleVariant(h1),OleVariant(0)] := Integer(EXGRIDLib_TLB.exTotalField) Or Integer(EXGRIDLib_TLB.exHTML); FormatCell[OleVariant(h1),OleVariant(0)] := '''sum of <b>Parent Direct</b> children: ''+value +`</fgcolor> using <a>sum(parent,direct,%0)`'; h1 := InsertItem(h,Null,'sum(parent,rec,%0)'); CellValueFormat[OleVariant(h1),OleVariant(0)] := Integer(EXGRIDLib_TLB.exTotalField) Or Integer(EXGRIDLib_TLB.exHTML); FormatCell[OleVariant(h1),OleVariant(0)] := '''sum of <fgcolor=00FF00><b>Parent Leaf</b> children: ''+value +`</fgcolor> using <a>sum(parent,rec,%0)`'; ExpandItem[0] := True; end; with Items do begin h := AddItem(''); CellValue[OleVariant(h),OleVariant(0)] := 'sum(all,rec,dbl(%0))'; CellValueFormat[OleVariant(h),OleVariant(0)] := Integer(EXGRIDLib_TLB.exTotalField) Or Integer(EXGRIDLib_TLB.exHTML); FormatCell[OleVariant(h),OleVariant(0)] := '''sum of <fgcolor=FF00FF><b>All (leaf children)</b>: ''+value +`</fgcolor> using <a>sum(all,rec,dbl(%0))`'; end; with Items do begin h := AddItem(''); CellValue[OleVariant(h),OleVariant(0)] := 'sum(all,all,dbl(%0))'; CellValueFormat[OleVariant(h),OleVariant(0)] := Integer(EXGRIDLib_TLB.exTotalField) Or Integer(EXGRIDLib_TLB.exHTML); FormatCell[OleVariant(h),OleVariant(0)] := '''sum of <fgcolor=FF00FF><b>All (children)</b>: ''+value +`</fgcolor> using <a>sum(all,all,dbl(%0))`'; end; EndUpdate(); end |
783 |
Do you have any Fit-To-Page options when printing the control
with Grid1 do begin ColumnAutoResize := False; ContinueColumnScroll := False; rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset); with rs do begin Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb',3,3,Null); end; DataSource := (IUnknown(rs) as ADODB_TLB.Recordset); with (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('Exontrol.Print'))) as EXPRINTLib_TLB.Print) do begin Options := 'FitToPage = On'; PrintExt := (IUnknown(Grid1.DefaultInterface) as EXGRIDLib_TLB.Grid); Preview(); end; end |
782 |
How do I hide the selection
with Grid1 do begin BeginUpdate(); MarkSearchColumn := False; SelForeColor := ForeColor; SelBackColor := BackColor; ShowFocusRect := False; with Columns do begin with (IUnknown(Add('Format')) as EXGRIDLib_TLB.Column) do begin FormatColumn := 'type(value) in (0,1) ? ''null'' : ( dbl(value)<0 ? ''<fgcolor=FF0000>''+ (value format ''2|.|3|,|1'' ) : (dbl(value)>0 ? ''<fgcolor=000' + '0FF>+''+(value format ''2|.|3|,'' ): ''0.00'') )'; Def[EXGRIDLib_TLB.exCellValueFormat] := OleVariant(1); end; end; with Items do begin AddItem(OleVariant(10)); AddItem(OleVariant(-8)); end; EndUpdate(); end |
781 |
How do I access the cells, or how do I get the values in the columns
with Grid1 do begin with Columns do begin Add('C1'); Add('C2'); Add('C3'); end; with Items do begin h := AddItem('Item 1'); CellValue[OleVariant(h),OleVariant(1)] := 'SubItem 1.1'; CellValue[OleVariant(h),OleVariant(2)] := 'SubItem 1.2'; OutputDebugString( CellValue[OleVariant(h),OleVariant(2)] ); end; end |
780 |
I am using the FormatColumn/FormatCell to format my columns. Is it possible to ignore the SelForeColor, so the foreground color for selected items does not override my settings
// SelectionChanged event - Fired after a new item has been selected. procedure TForm1.Grid1SelectionChanged(ASender: TObject; ); begin with Grid1 do begin with Items do begin ClearItemBackColor(0); ItemBackColor[SelectedItem[0]] := $ffff80; end; end end; with Grid1 do begin BeginUpdate(); MarkSearchColumn := False; SelForeColor := ForeColor; SelBackColor := BackColor; ShowFocusRect := False; with Columns do begin with (IUnknown(Add('Format')) as EXGRIDLib_TLB.Column) do begin FormatColumn := 'type(value) in (0,1) ? ''null'' : ( dbl(value)<0 ? ''<fgcolor=FF0000>''+ (value format ''2|.|3|,|1'' ) : (dbl(value)>0 ? ''<fgcolor=000' + '0FF>+''+(value format ''2|.|3|,'' ): ''0.00'') )'; Def[EXGRIDLib_TLB.exCellValueFormat] := OleVariant(1); end; end; with Items do begin AddItem(OleVariant(10)); AddItem(OleVariant(-8)); end; EndUpdate(); end |
779 |
How can I get the number of columns being shown in the control's SortBar part
with Grid1 do begin BeginUpdate(); rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset); with rs do begin Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb',3,3,Null); end; DataSource := (IUnknown(rs) as ADODB_TLB.Recordset); SingleSort := False; SortBarVisible := True; Columns.Item[OleVariant(1)].SortOrder := True; Columns.Item[OleVariant(2)].SortOrder := True; OutputDebugString( Columns.SortBarColumnsCount ); EndUpdate(); end |
778 |
How can I add a header and footer for grouping items
// AddGroupItem event - Occurs after a new Group Item has been inserted to Items collection. procedure TForm1.Grid1AddGroupItem(ASender: TObject; Item : HITEM); begin with Grid1 do begin with Items do begin h := InsertItem(Item,Null,''); SelectableItem[h] := False; CellValue[OleVariant(h),OleVariant(6)] := 'min(parent,rec,dbl(%6))'; CellValueFormat[OleVariant(h),OleVariant(6)] := Integer(EXGRIDLib_TLB.exTotalField) Or Integer(EXGRIDLib_TLB.exHTML); FormatCell[OleVariant(h),OleVariant(6)] := '`<font ;7><b>Min</b>: ` + value'; ItemPosition[h] := 0; h := InsertItem(Item,Null,''); SelectableItem[h] := False; CellValue[OleVariant(h),OleVariant(6)] := 'max(parent,rec,dbl(%6))'; CellValueFormat[OleVariant(h),OleVariant(6)] := Integer(EXGRIDLib_TLB.exTotalField) Or Integer(EXGRIDLib_TLB.exHTML); FormatCell[OleVariant(h),OleVariant(6)] := '`<font ;7><b>Max</b>: ` + value'; end; end end; with Grid1 do begin BeginUpdate(); HasLines := EXGRIDLib_TLB.exNoLine; ColumnAutoResize := False; rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset); with rs do begin Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb',3,3,Null); end; DataSource := (IUnknown(rs) as ADODB_TLB.Recordset); SingleSort := False; SortBarVisible := True; AllowGroupBy := True; Columns.Item[OleVariant(1)].SortOrder := True; EndUpdate(); end |
777 |
How can I add a footer for grouping items
// AddGroupItem event - Occurs after a new Group Item has been inserted to Items collection. procedure TForm1.Grid1AddGroupItem(ASender: TObject; Item : HITEM); begin with Grid1 do begin with Items do begin h := InsertItem(Item,Null,''); SelectableItem[h] := False; CellValue[OleVariant(h),OleVariant(6)] := 'sum(parent,rec,dbl(%6))'; CellValueFormat[OleVariant(h),OleVariant(6)] := Integer(EXGRIDLib_TLB.exTotalField) Or Integer(EXGRIDLib_TLB.exHTML); FormatCell[OleVariant(h),OleVariant(6)] := '`<font ;7><b>Sum</b>: ` + value'; end; end end; with Grid1 do begin BeginUpdate(); HasLines := EXGRIDLib_TLB.exNoLine; ColumnAutoResize := False; rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset); with rs do begin Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb',3,3,Null); end; DataSource := (IUnknown(rs) as ADODB_TLB.Recordset); SingleSort := False; SortBarVisible := True; AllowGroupBy := True; Columns.Item[OleVariant(1)].SortOrder := True; EndUpdate(); end |
776 |
How can I handle the event for the inside controls
// ItemOleEvent event - Fired when an ActiveX control hosted by an item has fired an event. procedure TForm1.Grid1ItemOleEvent(ASender: TObject; Item : HITEM;Ev : IOleEvent); begin with Grid1 do begin OutputDebugString( Ev ); end end; with Grid1 do begin LinesAtRoot := EXGRIDLib_TLB.exLinesAtRoot; ScrollBySingleLine := True; Columns.Add('Default'); with Items do begin h := AddItem('Root'); ExpandItem[h] := True; h := InsertControlItem(h,'Exontrol.Grid',Null); ItemHeight[h] := 256; with (IUnknown(ItemObject[h]) as EXGRIDLib_TLB.Grid) do begin LinesAtRoot := EXGRIDLib_TLB.exLinesAtRoot; ScrollBySingleLine := True; Columns.Add('C1'); Columns.Add('C2'); with Items do begin CellValue[OleVariant(AddItem(OleVariant(1))),OleVariant(1)] := OleVariant(2); end; h := Items.AddItem(OleVariant(3)); Items.CellValue[OleVariant(h),OleVariant(1)] := OleVariant(4); with Items do begin ExpandItem[h] := True; h := InsertControlItem(h,'Exontrol.Grid',Null); with (IUnknown(ItemObject[h]) as EXGRIDLib_TLB.Grid) do begin LinesAtRoot := EXGRIDLib_TLB.exLinesAtRoot; Columns.Add('Inside-Inside'); with Items do begin h := AddItem('item'); InsertItem(h,Null,'child 1'); InsertItem(h,Null,'child 2'); InsertItem(h,Null,'child 3'); end; end; end; end; end; end |
775 |
How can I specify the position of the item manually (Method 2)
with Grid1 do begin Columns.Add('Default'); with Items do begin AddItem('Child 3'); AddItem('Child 2'); AddItem('Child 1'); ItemPosition[ItemByIndex[0]] := 2; ItemPosition[ItemByIndex[1]] := 1; ItemPosition[ItemByIndex[2]] := 0; end; end |
774 |
How can I specify the position of the item manually (Method 1)
with Grid1 do begin Columns.Add('Default'); with Items do begin h3 := AddItem('Child 3'); h2 := AddItem('Child 2'); h1 := AddItem('Child 1'); ItemPosition[h3] := 2; ItemPosition[h2] := 1; ItemPosition[h1] := 0; end; end |
773 |
Is it possible to open second inside grid in inside-grid
with Grid1 do begin LinesAtRoot := EXGRIDLib_TLB.exLinesAtRoot; ScrollBySingleLine := True; Columns.Add('Default'); with Items do begin h := AddItem('Root'); ExpandItem[h] := True; h := InsertControlItem(h,'Exontrol.Grid',Null); ItemHeight[h] := 256; with (IUnknown(ItemObject[h]) as EXGRIDLib_TLB.Grid) do begin LinesAtRoot := EXGRIDLib_TLB.exLinesAtRoot; ScrollBySingleLine := True; Columns.Add('C1'); Columns.Add('C2'); with Items do begin CellValue[OleVariant(AddItem(OleVariant(1))),OleVariant(1)] := OleVariant(2); end; h := Items.AddItem(OleVariant(3)); Items.CellValue[OleVariant(h),OleVariant(1)] := OleVariant(4); with Items do begin ExpandItem[h] := True; h := InsertControlItem(h,'Exontrol.Grid',Null); with (IUnknown(ItemObject[h]) as EXGRIDLib_TLB.Grid) do begin Columns.Add('Inside-Inside'); Items.AddItem('item'); end; end; end; end; end |
772 |
Computed field concatating strings values to calculated values. Is there something we can change this
with Grid1 do begin with Columns do begin Add('A'); Add('B'); (IUnknown(Add('Sum')) as EXGRIDLib_TLB.Column).ComputedField := 'dbl(%0) + dbl(%1)'; (IUnknown(Add('Concaternation')) as EXGRIDLib_TLB.Column).ComputedField := 'str(%0) + str(%1)'; end; with Items do begin CellValue[OleVariant(AddItem(OleVariant(1))),OleVariant(1)] := OleVariant(2); CellValue[OleVariant(AddItem(OleVariant(21))),OleVariant(1)] := OleVariant(22); end; end |
771 |
Is it possible the Items.FormatCell or Column.FormatColumn to use values from other columns
with Grid1 do begin with Columns do begin (IUnknown(Add('A')) as EXGRIDLib_TLB.Column).Editor.EditType := EXGRIDLib_TLB.SpinType; (IUnknown(Add('B')) as EXGRIDLib_TLB.Column).FormatColumn := 'currency(%0)'; (IUnknown(Add('C')) as EXGRIDLib_TLB.Column).FormatColumn := '%1 format '''''; end; with Items do begin AddItem(OleVariant(1)); AddItem(OleVariant(2)); AddItem(OleVariant(3)); end; end |
770 |
Is it possible to do un-grouping the items
// Click event - Occurs when the user presses and then releases the left mouse button over the grid control. procedure TForm1.Grid1Click(ASender: TObject; ); begin with Grid1 do begin Ungroup(); end end; with Grid1 do begin BeginUpdate(); ColumnAutoResize := False; rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset); with rs do begin Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb',3,3,Null); end; DataSource := (IUnknown(rs) as ADODB_TLB.Recordset); SortBarHeight := 24; HeaderHeight := 24; SortBarVisible := True; SortBarCaption := 'Drag a <b>column</b> header here to group by that column.'; AllowGroupBy := True; ReadOnly := EXGRIDLib_TLB.exReadOnly; with Columns.Item[OleVariant(1)] do begin Alignment := EXGRIDLib_TLB.CenterAlignment; Def[EXGRIDLib_TLB.exCellBackColor] := OleVariant(15790320); SortOrder := True; end; EndUpdate(); end |
769 |
How can I change the visual aspect of the links in the sort bar
with Grid1 do begin BeginUpdate(); ColumnAutoResize := False; rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset); with rs do begin Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb',3,3,Null); end; DataSource := (IUnknown(rs) as ADODB_TLB.Recordset); SortBarHeight := 24; HeaderHeight := 24; BackColorSortBar := RGB(240,240,240); BackColorSortBarCaption := BackColor; VisualAppearance.Add(1,'gBFLBCJwBAEHhEJAEGg4BdsIQAAYAQGKIYBkAKBQAGaAoDDgNw0QwAAxjMK0EwsACEIrjKCRShyCYZRhGcTSBCIZBqEqSZLiEZRQiiCYsS5GQBSFDcOwHGyQYDkCQpAA' + 'WL4tCyMc7QHKAWhrEAbJjgQYJUh+TQAAZCIJRXRQAL/K6rKwnSCQIgkUBpGKdBynEYoYxAfyESCJWyIahWAwoQjUMB1HLQAAxC5kKbkIxyBABFBdVjVeBYG78Bz+ABjE' + 'ovbAMEwPBqAMwmIAZDheA4FR4AGhTXKcbxrFaXZSzKckPRoADSZq1Sg5LjDJI2ABqU6ABqNLZtJKsZS4apABrWeZ3Q7QMLdFTwA4PH6EZhxXAYbTVeaPZjQIBAgI'); SortBarVisible := True; SortBarCaption := 'Drag a <b>column</b> header here to group by that column.'; AllowGroupBy := True; with Columns.Item[OleVariant(1)] do begin Alignment := EXGRIDLib_TLB.CenterAlignment; Def[EXGRIDLib_TLB.exCellBackColor] := OleVariant(15790320); SortOrder := True; end; with Columns.Item[OleVariant(5)] do begin Alignment := EXGRIDLib_TLB.CenterAlignment; Def[EXGRIDLib_TLB.exCellBackColor] := OleVariant(16119285); SortOrder := True; end; Background[EXGRIDLib_TLB.exSortBarLinkColor] := $1000000; EndUpdate(); end |
768 |
Is it possible to display no +/- button for grouped items
with Grid1 do begin BeginUpdate(); ColumnAutoResize := False; rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset); with rs do begin Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb',3,3,Null); end; DataSource := (IUnknown(rs) as ADODB_TLB.Recordset); SortBarVisible := True; SortBarCaption := 'Drag a <b>column</b> header here to group by that column.'; AllowGroupBy := True; with Columns.Item[OleVariant(1)] do begin Alignment := EXGRIDLib_TLB.CenterAlignment; Def[EXGRIDLib_TLB.exCellBackColor] := OleVariant(15790320); end; EndUpdate(); end |
767 |
How can I remove the extra information that grouped items display
with Grid1 do begin BeginUpdate(); LinesAtRoot := EXGRIDLib_TLB.exGroupLinesOutside; ColumnAutoResize := False; rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset); with rs do begin Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb',3,3,Null); end; DataSource := (IUnknown(rs) as ADODB_TLB.Recordset); SortBarVisible := True; SortBarCaption := 'Drag a <b>column</b> header here to group by that column.'; AllowGroupBy := True; Columns.Item[OleVariant(6)].AllowGroupBy := False; with Columns.Item[OleVariant(1)] do begin GroupByTotalField := ''; GroupByFormatCell := ''; end; EndUpdate(); end |
766 |
How can I change the label, caption or the formula of the grouped items
// AddItem event - Occurs after a new Item has been inserted to Items collection. procedure TForm1.Grid1AddItem(ASender: TObject; Item : HITEM); begin with Grid1 do begin Items.ItemDividerLineAlignment[Item] := EXGRIDLib_TLB.DividerBoth; end end; // Change event - Occurs when the user changes the cell's content. procedure TForm1.Grid1Change(ASender: TObject; Item : HITEM;ColIndex : Integer;var NewValue : OleVariant); begin with Grid1 do begin Refresh(); end end; with Grid1 do begin BeginUpdate(); ScrollBySingleLine := True; LinesAtRoot := EXGRIDLib_TLB.exGroupLinesOutside; ColumnAutoResize := False; rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset); with rs do begin Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb',3,3,Null); end; DataSource := (IUnknown(rs) as ADODB_TLB.Recordset); SortBarVisible := True; SortBarCaption := 'Drag a <b>column</b> header here to group by that column.'; AllowGroupBy := True; Columns.Item[OleVariant(6)].AllowGroupBy := False; with Columns.Item[OleVariant(1)] do begin GroupByTotalField := 'sum(current,rec,%6)'; GroupByFormatCell := '''<font ;11>'' + <caption> + ''</font> <fgcolor=808080>( Freight: '' + currency(value) + '')'''; end; DefaultItemHeight := 28; EndUpdate(); end |
765 |
How can I change the aspect of grouped items
// AddItem event - Occurs after a new Item has been inserted to Items collection. procedure TForm1.Grid1AddItem(ASender: TObject; Item : HITEM); begin with Grid1 do begin with Items do begin ItemDividerLine[Item] := EXGRIDLib_TLB.EmptyLine; l := GroupItem[Item]; CellSingleLine[OleVariant(Item),OleVariant(l)] := EXGRIDLib_TLB.exCaptionWordWrap; CellBold[OleVariant(Item),OleVariant(l)] := True; CellBackColor[OleVariant(Item),OleVariant(l)] := $1000000; end; end end; with Grid1 do begin BeginUpdate(); ScrollBySingleLine := True; LinesAtRoot := EXGRIDLib_TLB.exNoLinesAtRoot; TreeColumnIndex := -1; ColumnAutoResize := False; rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset); with rs do begin Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb',3,3,Null); end; VisualAppearance.Add(1,'gBFLBCJwBAEHhEJAEGg4BKoCg6AADACAxRDAMgBQKAAzQFAYcBuGiGAAGMZhWgmFgAQhFcZQSKUOQTDKMIziaQIRDEMw5SSNIxyAK0QBkAqNQCkKKwIgmNYDSBMYABBI' + 'MBwiGQaRJnegYRDUMJCQjRVITVLMNoXDKZIyqEAHfpWVJWSLHcIhDBJUjcOYyTiOQrzCK8dB0G6bIrGEZpYRAPwEYDIIjbQhqFYDChCNLwHScEAxC4kLhnKK6Vb9d6HY' + 'hiOJYXhmDrfR7IMhyLI8QafFqXZhmOZZXizPY9T7QNB0LQ8eZbJqnahqOpaOx2W5dV7YNh2LTWGzXNq3bhuOzLbrme59X7gOB3RZeE4XRrHchxKq8XxnG6dZ7oOTUXof' + 'FOK5WmudQTh2LpfHOO5em+doSh4LwfhOS5mnGIw9D6LxfjOW5unSIQ+D8L4flOa5yD2fg/D+L5fnOe54ByigGAKAJgEgBBrgGYIICYCoCmCSAcGOA5hAgRgSgSYQBGoF' + 'oFmGCBmBqBphGESgegeYgIgYIoHkSKIWCaCZigiJgqgqYhog4LoLmGSJGDKBZhEiVg2gMY4ImYCIBGOSJ1n6D5kAeZZ2hCZBHj4RoRl6J4eEqEpeAkNhOHaXYJEYUh0G' + 'USRVkwchlgkZZChaZZGnWOoXmYBpOGKGJamaLhmhmWhJiYahnlmSY2G4ZZZEmRhyGMZxJlWCBhFCFgWHaHpYkmSh+GSJp6AWG4amgRoOGeIZahmEoKGyJgKDWOIXGkBw' + 'GFmJJcHkWoWHQJQqGWVoTmmRx+EuJ5eFkIoiHuJBKhWdIQGqB52D2KpgDiaougMIxqyODJrEgbgvi2YgYjKOoumKSpij4FIrFsBg0iyLBKj6RoOmqSwmimMpkCqGpOii' + 'bQJCaII0mmWxWFCJotgoXpahWaRLHaEY3mWag6mKIpuEmFoIjmaBbiYbIgi6RhaH+O5Onmcpyh2VYAAEASAg'); DrawGridLines := EXGRIDLib_TLB.exHLines; DataSource := (IUnknown(rs) as ADODB_TLB.Recordset); SortBarVisible := True; SortBarCaption := 'Drag a <b>column</b> header here to group by that column.'; AllowGroupBy := True; with Columns.Item[OleVariant(1)] do begin GroupByFormatCell := '''EmployeeID: '' + <caption> + ''<br><font ;7><fgcolor=808080>Count: '' + value'; end; EndUpdate(); end |
764 |
How can I remove or change the line it shows for grouped items
// AddItem event - Occurs after a new Item has been inserted to Items collection. procedure TForm1.Grid1AddItem(ASender: TObject; Item : HITEM); begin with Grid1 do begin Items.ItemDividerLine[Item] := EXGRIDLib_TLB.EmptyLine; end end; with Grid1 do begin BeginUpdate(); ColumnAutoResize := False; rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset); with rs do begin Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb',3,3,Null); end; DataSource := (IUnknown(rs) as ADODB_TLB.Recordset); SortBarVisible := True; SortBarCaption := 'Drag a <b>column</b> header here to group by that column.'; AllowGroupBy := True; EndUpdate(); end |
763 |
Is it possible to determine whether an item is regular or a group by item
// MouseMove event - Occurs when the user moves the mouse. procedure TForm1.Grid1MouseMove(ASender: TObject; Button : Smallint;Shift : Smallint;X : Integer;Y : Integer); begin with Grid1 do begin h := ItemFromPoint[-1,-1,c,hit]; OutputDebugString( Items.GroupItem[h] ); end end; with Grid1 do begin BeginUpdate(); ColumnAutoResize := False; rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset); with rs do begin Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb',3,3,Null); end; DataSource := (IUnknown(rs) as ADODB_TLB.Recordset); SortBarVisible := True; SortBarCaption := 'Drag a <b>column</b> header here to group by that column.'; AllowGroupBy := True; EndUpdate(); end |
762 |
How can I collapse all items when the user performs a grouping
// AddGroupItem event - Occurs after a new Group Item has been inserted to Items collection. procedure TForm1.Grid1AddGroupItem(ASender: TObject; Item : HITEM); begin with Grid1 do begin Items.ExpandItem[Item] := False; end end; with Grid1 do begin BeginUpdate(); ColumnAutoResize := False; rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset); with rs do begin Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb',3,3,Null); end; DataSource := (IUnknown(rs) as ADODB_TLB.Recordset); SortBarVisible := True; SortBarCaption := 'Drag a <b>column</b> header here to group by that column.'; AllowGroupBy := True; EndUpdate(); end |
761 |
Is it possible to select columns that user can drop to the sort bar, when using the Group By feature
with Grid1 do begin BeginUpdate(); ColumnAutoResize := False; rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset); with rs do begin Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb',3,3,Null); end; DataSource := (IUnknown(rs) as ADODB_TLB.Recordset); SortBarVisible := True; SortBarCaption := '<fgcolor=FF0000>Try to drag the EmployeeID column here.'; AllowGroupBy := True; Columns.Item[OleVariant(1)].AllowGroupBy := False; EndUpdate(); end |
760 |
How can I enable the Group By support, with no sort bar
with Grid1 do begin BeginUpdate(); ColumnAutoResize := False; rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset); with rs do begin Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb',3,3,Null); end; DataSource := (IUnknown(rs) as ADODB_TLB.Recordset); SingleSort := False; AllowGroupBy := True; Columns.Item[OleVariant(1)].SortOrder := True; EndUpdate(); end |
759 |
Does your control support Group-By feature
with Grid1 do begin BeginUpdate(); ColumnAutoResize := False; rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset); with rs do begin Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb',3,3,Null); end; DataSource := (IUnknown(rs) as ADODB_TLB.Recordset); SortBarVisible := True; SortBarCaption := 'Drag a <b>column</b> header here to group by that column.'; AllowGroupBy := True; EndUpdate(); end |
758 |
How can I restrict a field to number only (Method 3, Float)
with Grid1 do begin with (IUnknown(Columns.Add('Numbers')) as EXGRIDLib_TLB.Column).Editor do begin EditType := EXGRIDLib_TLB.EditType; Numeric := EXGRIDLib_TLB.exFloat; end; Items.AddItem(OleVariant(12)); end |
757 |
How can I restrict a field to number only (Method 2, Integer only)
with Grid1 do begin with (IUnknown(Columns.Add('Numbers')) as EXGRIDLib_TLB.Column).Editor do begin EditType := EXGRIDLib_TLB.EditType; Numeric := EXGRIDLib_TLB.exInteger; end; Items.AddItem(OleVariant(12)); end |
756 |
How can I restrict a field to number only (Method 1)
with Grid1 do begin with (IUnknown(Columns.Add('Numbers')) as EXGRIDLib_TLB.Column).Editor do begin EditType := EXGRIDLib_TLB.MaskType; Mask := '###.###'; end; Items.AddItem(OleVariant(12)); end |
755 |
Is it possible to include only leaf items ( items with no childs ) in the drop down list
with Grid1 do begin BeginUpdate(); LinesAtRoot := EXGRIDLib_TLB.exLinesAtRoot; with (IUnknown(Columns.Add('Items')) as EXGRIDLib_TLB.Column) do begin DisplayFilterButton := True; DisplayFilterPattern := False; FilterList := Integer(EXGRIDLib_TLB.exShowFocusItem) Or Integer(EXGRIDLib_TLB.exShowCheckBox) Or Integer(EXGRIDLib_TLB.exSortItemsAsc) Or Integer(EXGRIDLib_TLB.exLeafItems); end; with Items do begin h := AddItem('Root 1'); InsertItem(h,Null,'Child 1'); InsertItem(h,Null,'Child 2'); ExpandItem[h] := True; h := AddItem('Root 2'); InsertItem(h,Null,'Child 1'); InsertItem(h,Null,'Child 2'); InsertItem(h,Null,'Child 3'); ExpandItem[h] := True; end; EndUpdate(); end |
754 |
I have several columns, but noticed that the filter is using AND between columns, but I need OR clause for filtering. Is it possible
with Grid1 do begin BeginUpdate(); LinesAtRoot := EXGRIDLib_TLB.exLinesAtRoot; with (IUnknown(Columns.Add('Item')) as EXGRIDLib_TLB.Column) do begin DisplayFilterButton := True; DisplayFilterPattern := False; Filter := 'Child 1'; FilterType := EXGRIDLib_TLB.exFilter; end; with (IUnknown(Columns.Add('Date')) as EXGRIDLib_TLB.Column) do begin DisplayFilterButton := True; DisplayFilterPattern := False; DisplayFilterDate := True; FilterList := Integer(EXGRIDLib_TLB.exShowExclude) Or Integer(EXGRIDLib_TLB.exShowFocusItem) Or Integer(EXGRIDLib_TLB.exShowCheckBox) Or Integer(EXGRIDLib_TLB.exNoItems); Filter := '12/28/2010'; FilterType := EXGRIDLib_TLB.exDate; end; FilterCriteria := '%0 or %1'; Description[EXGRIDLib_TLB.exFilterBarOr] := '<font ;18><fgcolor=FF0000>or</fgcolor></font>'; Description[EXGRIDLib_TLB.exFilterBarAnd] := '<font ;18><fgcolor=FF0000>and</fgcolor></font>'; with Items do begin h := AddItem('Root 1'); CellValue[OleVariant(InsertItem(h,Null,'Child 1')),OleVariant(1)] := '12/27/2010'; CellValue[OleVariant(InsertItem(h,Null,'Child 2')),OleVariant(1)] := '12/28/2010'; ExpandItem[h] := True; h := AddItem('Root 2'); CellValue[OleVariant(InsertItem(h,Null,'Child 1')),OleVariant(1)] := '12/29/2010'; CellValue[OleVariant(InsertItem(h,Null,'Child 2')),OleVariant(1)] := '12/30/2010'; end; ApplyFilter(); EndUpdate(); end |
753 |
Is it possible exclude the dates being selected in the drop down filter window
with Grid1 do begin BeginUpdate(); with (IUnknown(Columns.Add('Date')) as EXGRIDLib_TLB.Column) do begin SortType := EXGRIDLib_TLB.SortDate; DisplayFilterButton := True; DisplayFilterPattern := False; DisplayFilterDate := True; FilterList := Integer(EXGRIDLib_TLB.exShowExclude) Or Integer(EXGRIDLib_TLB.exShowFocusItem) Or Integer(EXGRIDLib_TLB.exShowCheckBox) Or Integer(EXGRIDLib_TLB.exNoItems); end; with Items do begin AddItem('12/27/2010'); AddItem('12/28/2010'); AddItem('12/29/2010'); AddItem('12/30/2010'); AddItem('12/31/2010'); end; EndUpdate(); end |
752 |
How can I display a calendar control inside the drop down filter window
with Grid1 do begin BeginUpdate(); with (IUnknown(Columns.Add('Date')) as EXGRIDLib_TLB.Column) do begin SortType := EXGRIDLib_TLB.SortDate; DisplayFilterButton := True; DisplayFilterPattern := False; DisplayFilterDate := True; FilterList := Integer(EXGRIDLib_TLB.exShowFocusItem) Or Integer(EXGRIDLib_TLB.exShowCheckBox) Or Integer(EXGRIDLib_TLB.exNoItems); end; with Items do begin AddItem('12/27/2010'); AddItem('12/28/2010'); AddItem('12/29/2010'); AddItem('12/30/2010'); AddItem('12/31/2010'); end; EndUpdate(); end |
751 |
Is it possible to include the dates as checkb-boxes in the drop down filter window
with Grid1 do begin BeginUpdate(); with (IUnknown(Columns.Add('Dates')) as EXGRIDLib_TLB.Column) do begin SortType := EXGRIDLib_TLB.SortDate; DisplayFilterButton := True; DisplayFilterPattern := True; DisplayFilterDate := True; FilterList := Integer(EXGRIDLib_TLB.exShowFocusItem) Or Integer(EXGRIDLib_TLB.exShowCheckBox); Filter := 'to 12/27/2010'; FilterType := EXGRIDLib_TLB.exDate; end; with Items do begin AddItem('12/27/2010'); AddItem('12/28/2010'); AddItem('12/29/2010'); AddItem('12/30/2010'); AddItem('12/31/2010'); end; ApplyFilter(); EndUpdate(); end |
750 |
How can I filter items for dates before a specified date
with Grid1 do begin BeginUpdate(); with (IUnknown(Columns.Add('Dates')) as EXGRIDLib_TLB.Column) do begin SortType := EXGRIDLib_TLB.SortDate; DisplayFilterButton := True; DisplayFilterPattern := True; DisplayFilterDate := True; FilterList := Integer(EXGRIDLib_TLB.exShowFocusItem) Or Integer(EXGRIDLib_TLB.exNoItems); Filter := 'to 12/27/2010'; FilterType := EXGRIDLib_TLB.exDate; end; with Items do begin AddItem('12/27/2010'); AddItem('12/28/2010'); AddItem('12/29/2010'); AddItem('12/30/2010'); AddItem('12/31/2010'); end; ApplyFilter(); EndUpdate(); end |
749 |
Is it possible to filter dates
with Grid1 do begin BeginUpdate(); with (IUnknown(Columns.Add('Dates')) as EXGRIDLib_TLB.Column) do begin SortType := EXGRIDLib_TLB.SortDate; DisplayFilterButton := True; DisplayFilterPattern := True; DisplayFilterDate := True; FilterList := Integer(EXGRIDLib_TLB.exShowFocusItem) Or Integer(EXGRIDLib_TLB.exNoItems); end; with Items do begin AddItem('12/27/2010'); AddItem('12/28/2010'); AddItem('12/29/2010'); AddItem('12/30/2010'); AddItem('12/31/2010'); end; EndUpdate(); end |
748 |
Is it possible to change the Exclude field name to something different, in the drop down filter window
with Grid1 do begin BeginUpdate(); LinesAtRoot := EXGRIDLib_TLB.exLinesAtRoot; Description[EXGRIDLib_TLB.exFilterBarExclude] := 'Leaving out'; with (IUnknown(Columns.Add('Items')) as EXGRIDLib_TLB.Column) do begin DisplayFilterButton := True; DisplayFilterPattern := False; FilterList := Integer(EXGRIDLib_TLB.exShowExclude) Or Integer(EXGRIDLib_TLB.exShowFocusItem) Or Integer(EXGRIDLib_TLB.exShowCheckBox); end; with Items do begin h := AddItem('Root 1'); InsertItem(h,Null,'Child 1'); InsertItem(h,Null,'Child 2'); ExpandItem[h] := True; h := AddItem('Root 2'); InsertItem(h,Null,'Child 1'); end; EndUpdate(); end |
747 |
How can I display the Exclude field in the drop down filter window
with Grid1 do begin BeginUpdate(); LinesAtRoot := EXGRIDLib_TLB.exLinesAtRoot; with (IUnknown(Columns.Add('Items')) as EXGRIDLib_TLB.Column) do begin DisplayFilterButton := True; DisplayFilterPattern := False; FilterList := Integer(EXGRIDLib_TLB.exShowExclude) Or Integer(EXGRIDLib_TLB.exShowFocusItem) Or Integer(EXGRIDLib_TLB.exShowCheckBox); end; with Items do begin h := AddItem('Root 1'); InsertItem(h,Null,'Child 1'); InsertItem(h,Null,'Child 2'); ExpandItem[h] := True; h := AddItem('Root 2'); InsertItem(h,Null,'Child 1'); end; EndUpdate(); end |
746 |
Is it possible to show and ensure the focused item from the control, in the drop down filter window
with Grid1 do begin BeginUpdate(); LinesAtRoot := EXGRIDLib_TLB.exLinesAtRoot; with (IUnknown(Columns.Add('Items')) as EXGRIDLib_TLB.Column) do begin DisplayFilterButton := True; DisplayFilterPattern := False; FilterList := Integer(EXGRIDLib_TLB.exShowFocusItem) Or Integer(EXGRIDLib_TLB.exShowCheckBox); end; with Items do begin h := AddItem('Root 1'); InsertItem(h,Null,'Child 1'); InsertItem(h,Null,'Child 2'); ExpandItem[h] := True; h := AddItem('Root 2'); InsertItem(h,Null,'Child 1'); SelectItem[InsertItem(h,Null,'Child 2')] := True; ExpandItem[h] := True; end; EndUpdate(); end |
745 |
Is it possible to show only blanks items with no listed items from the control
with Grid1 do begin BeginUpdate(); LinesAtRoot := EXGRIDLib_TLB.exLinesAtRoot; with (IUnknown(Columns.Add('Items')) as EXGRIDLib_TLB.Column) do begin DisplayFilterButton := True; DisplayFilterPattern := False; FilterList := Integer(EXGRIDLib_TLB.exShowBlanks) Or Integer(EXGRIDLib_TLB.exNoItems); end; with Items do begin h := AddItem('Root 1'); InsertItem(h,Null,'Child 1'); InsertItem(h,Null,'Child 2'); ExpandItem[h] := True; h := AddItem('Root 2'); InsertItem(h,Null,'Child 1'); InsertItem(h,Null,'Child 2'); end; EndUpdate(); end |
744 |
How can I include the blanks items in the drop down filter window
with Grid1 do begin BeginUpdate(); LinesAtRoot := EXGRIDLib_TLB.exLinesAtRoot; with (IUnknown(Columns.Add('Items')) as EXGRIDLib_TLB.Column) do begin DisplayFilterButton := True; DisplayFilterPattern := False; FilterList := Integer(EXGRIDLib_TLB.exShowBlanks) Or Integer(EXGRIDLib_TLB.exShowCheckBox); end; with Items do begin h := AddItem('Root 1'); InsertItem(h,Null,'Child 1'); InsertItem(h,Null,'Child 2'); ExpandItem[h] := True; h := AddItem('Root 2'); InsertItem(h,Null,'Child 1'); InsertItem(h,Null,'Child 2'); end; EndUpdate(); end |
743 |
How can I select multiple items in the drop down filter window, using check-boxes
with Grid1 do begin BeginUpdate(); LinesAtRoot := EXGRIDLib_TLB.exLinesAtRoot; with (IUnknown(Columns.Add('Items')) as EXGRIDLib_TLB.Column) do begin DisplayFilterButton := True; DisplayFilterPattern := False; FilterList := EXGRIDLib_TLB.exShowCheckBox; end; with Items do begin h := AddItem('Root 1'); InsertItem(h,Null,'Child 1'); InsertItem(h,Null,'Child 2'); ExpandItem[h] := True; h := AddItem('Root 2'); InsertItem(h,Null,'Child 1'); InsertItem(h,Null,'Child 2'); end; EndUpdate(); end |
742 |
Is it possible to allow a single item being selected in the drop down filter window
with Grid1 do begin BeginUpdate(); LinesAtRoot := EXGRIDLib_TLB.exLinesAtRoot; with (IUnknown(Columns.Add('Items')) as EXGRIDLib_TLB.Column) do begin DisplayFilterButton := True; DisplayFilterPattern := False; FilterList := EXGRIDLib_TLB.exSingleSel; end; with Items do begin h := AddItem('Root 1'); InsertItem(h,Null,'Child 1'); InsertItem(h,Null,'Child 2'); ExpandItem[h] := True; h := AddItem('Root 2'); InsertItem(h,Null,'Child 1'); InsertItem(h,Null,'Child 2'); end; EndUpdate(); end |
741 |
How can I display no (All) item in the drop down filter window
with Grid1 do begin BeginUpdate(); LinesAtRoot := EXGRIDLib_TLB.exLinesAtRoot; Description[EXGRIDLib_TLB.exFilterBarAll] := ''; with (IUnknown(Columns.Add('Items')) as EXGRIDLib_TLB.Column) do begin DisplayFilterButton := True; DisplayFilterPattern := True; FilterList := EXGRIDLib_TLB.exNoItems; end; with Items do begin h := AddItem('Root 1'); InsertItem(h,Null,'Child 1'); InsertItem(h,Null,'Child 2'); ExpandItem[h] := True; h := AddItem('Root 2'); InsertItem(h,Null,'Child 1'); InsertItem(h,Null,'Child 2'); end; EndUpdate(); end |
740 |
Is it possible to display no items in the drop down filter window, so only the pattern is visible
with Grid1 do begin BeginUpdate(); LinesAtRoot := EXGRIDLib_TLB.exLinesAtRoot; with (IUnknown(Columns.Add('Items')) as EXGRIDLib_TLB.Column) do begin DisplayFilterButton := True; DisplayFilterPattern := True; FilterList := EXGRIDLib_TLB.exNoItems; end; with Items do begin h := AddItem('Root 1'); InsertItem(h,Null,'Child 1'); InsertItem(h,Null,'Child 2'); ExpandItem[h] := True; h := AddItem('Root 2'); InsertItem(h,Null,'Child 1'); InsertItem(h,Null,'Child 2'); end; EndUpdate(); end |
739 |
How can I show the child items with no identation
with Grid1 do begin LinesAtRoot := EXGRIDLib_TLB.exGroupLinesOutside; Indent := 12; HasLines := EXGRIDLib_TLB.exThinLine; Columns.Add('Default'); with Items do begin h := AddItem('Root 1'); InsertItem(h,Null,'Child 1'); InsertItem(h,Null,'Child 2'); InsertItem(h,Null,'Child 3'); ExpandItem[h] := True; h := AddItem('Root 2'); InsertItem(h,Null,'Child 1'); InsertItem(h,Null,'Child 2'); InsertItem(h,Null,'Child 3'); end; end |
738 |
Is there other ways of showing the hierarchy lines (exGroupLinesAtRoot)
with Grid1 do begin LinesAtRoot := EXGRIDLib_TLB.exGroupLinesAtRoot; Indent := 12; Columns.Add('Default'); with Items do begin h := AddItem('Root'); InsertItem(h,Null,'Child 1'); InsertItem(h,Null,'Child 2'); InsertItem(h,Null,'Child 3'); ExpandItem[h] := True; end; end |
737 |
Is there other ways of showing the hierarchy lines (exGroupLinesOutside)
with Grid1 do begin LinesAtRoot := EXGRIDLib_TLB.exGroupLinesOutside; Indent := 12; Columns.Add('Default'); with Items do begin h := AddItem('Root 1'); InsertItem(h,Null,'Child 1'); InsertItem(h,Null,'Child 2'); InsertItem(h,Null,'Child 3'); ExpandItem[h] := True; h := AddItem('Root 2'); InsertItem(h,Null,'Child 1'); InsertItem(h,Null,'Child 2'); InsertItem(h,Null,'Child 3'); end; end |
736 |
Is there other ways of showing the hierarchy lines (exGroupLinesInsideLeaf)
with Grid1 do begin LinesAtRoot := EXGRIDLib_TLB.exGroupLinesInsideLeaf; Indent := 12; Columns.Add('Default'); with Items do begin h := AddItem('Root'); InsertItem(h,Null,'Child 1'); InsertItem(h,Null,'Child 2'); InsertItem(h,Null,'Child 3'); ExpandItem[h] := True; end; end |
735 |
Is there other ways of showing the hierarchy lines (exGroupLinesInside)
with Grid1 do begin LinesAtRoot := EXGRIDLib_TLB.exGroupLinesInside; Indent := 12; Columns.Add('Default'); with Items do begin h := AddItem('Root'); InsertItem(h,Null,'Child 1'); InsertItem(h,Null,'Child 2'); InsertItem(h,Null,'Child 3'); ExpandItem[h] := True; end; end |
734 |
Is there other ways of showing the hierarchy lines (exGroupLines)
with Grid1 do begin LinesAtRoot := EXGRIDLib_TLB.exGroupLines; Indent := 12; Columns.Add('Default'); with Items do begin h := AddItem('Root'); InsertItem(h,Null,'Child 1'); InsertItem(InsertItem(h,Null,'Child 2'),Null,'SubChild 2'); InsertItem(h,Null,'Child 3'); ExpandItem[h] := True; end; end |
733 |
Is it possible to display a column with buttons when using exCRD format
with Grid1 do begin BeginUpdate(); DrawGridLines := EXGRIDLib_TLB.exRowLines; DefaultItemHeight := 36; FullRowSelect := EXGRIDLib_TLB.exColumnSel; with Columns do begin with (IUnknown(Add('Column1')) as EXGRIDLib_TLB.Column) do begin Visible := False; Editor.EditType := EXGRIDLib_TLB.EditType; end; with (IUnknown(Add('Column2')) as EXGRIDLib_TLB.Column) do begin Visible := False; Editor.EditType := EXGRIDLib_TLB.EditType; end; with (IUnknown(Add('Column3')) as EXGRIDLib_TLB.Column) do begin Alignment := EXGRIDLib_TLB.CenterAlignment; HeaderAlignment := EXGRIDLib_TLB.CenterAlignment; Visible := False; Def[EXGRIDLib_TLB.exCellHasButton] := OleVariant(True); Def[EXGRIDLib_TLB.exCellButtonAutoWidth] := OleVariant(True); end; with (IUnknown(Add('FormatLevel')) as EXGRIDLib_TLB.Column) do begin FormatLevel := '(0/1),2:64'; Def[EXGRIDLib_TLB.exCellFormatLevel] := OleVariant(FormatLevel); end; end; with Items do begin h := AddItem('Cell 1.1'); CellValue[OleVariant(h),OleVariant(1)] := 'Cell 1.2'; CellValue[OleVariant(h),OleVariant(2)] := 'Cell 1.3'; h := AddItem('Cell 2.1'); CellValue[OleVariant(h),OleVariant(1)] := 'Cell 2.2'; CellValue[OleVariant(h),OleVariant(2)] := 'Cell 2.3'; end; EndUpdate(); end |
732 |
How can I change the check-boxes appearance
with Grid1 do begin LinesAtRoot := EXGRIDLib_TLB.exLinesAtRoot; with (IUnknown(Columns.Add('Default')) as EXGRIDLib_TLB.Column) do begin Def[EXGRIDLib_TLB.exCellHasCheckBox] := OleVariant(True); PartialCheck := True; end; with Items do begin h := AddItem('Root'); InsertItem(h,Null,'Child 1'); InsertItem(h,Null,'Child 2'); ExpandItem[h] := True; end; with VisualAppearance do begin Add(1,'XP:Button 3 12'); Add(2,'XP:Button 3 11'); Add(3,'XP:Button 3 10'); end; CheckImage[EXGRIDLib_TLB.Unchecked] := 16777216; CheckImage[EXGRIDLib_TLB.Checked] := 33554432; CheckImage[EXGRIDLib_TLB.PartialChecked] := 50331648; end |
731 |
Is it possible to disable the cell's editor context menu
with Grid1 do begin with (IUnknown(Columns.Add('Edit')) as EXGRIDLib_TLB.Column).Editor do begin EditType := EXGRIDLib_TLB.EditType; Option[EXGRIDLib_TLB.exEditAllowContextMenu] := OleVariant(False); end; with Items do begin AddItem(OleVariant(10)); AddItem(OleVariant(20)); end; end |
730 |
How can I find a value in a drop down editor
with Grid1 do begin with (IUnknown(Columns.Add('DropDownList')) as EXGRIDLib_TLB.Column).Editor do begin EditType := EXGRIDLib_TLB.DropDownListType; AddItem(1,'DDList 1',Null); AddItem(2,'DDList 2',Null); AddItem(3,'DDList 3',Null); end; with (IUnknown(Columns.Add('DropDown')) as EXGRIDLib_TLB.Column).Editor do begin EditType := EXGRIDLib_TLB.DropDownType; AddItem(1,'DDType 1',Null); AddItem(2,'DDType 2',Null); AddItem(3,'DDType 3',Null); end; with Items do begin CellValue[OleVariant(.AddItem(OleVariant(1))),OleVariant(1)] := Grid1.Columns.Item[OleVariant(1)].Editor.FindItem[OleVariant(1)]; CellValue[OleVariant(.AddItem(OleVariant(2))),OleVariant(1)] := Grid1.Columns.Item[OleVariant(1)].Editor.FindItem[OleVariant(2)]; end; end |
729 |
What is the difference between DropDownType and DropDownListType
with Grid1 do begin with (IUnknown(Columns.Add('DropDownList')) as EXGRIDLib_TLB.Column).Editor do begin EditType := EXGRIDLib_TLB.DropDownListType; AddItem(1,'First item',Null); AddItem(2,'Second item',Null); AddItem(3,'Third item',Null); end; with (IUnknown(Columns.Add('DropDown')) as EXGRIDLib_TLB.Column).Editor do begin EditType := EXGRIDLib_TLB.DropDownType; AddItem(1,'First item',Null); AddItem(2,'Second item',Null); AddItem(3,'Third item',Null); end; with Items do begin CellValue[OleVariant(AddItem(OleVariant(1))),OleVariant(1)] := 'Any'; CellValue[OleVariant(AddItem(OleVariant(2))),OleVariant(1)] := 'Any'; end; end |
728 |
How can I add or change the padding (spaces) for captions in the control's header
with Grid1 do begin BeginUpdate(); (IUnknown(Columns.Add('Padding-Left')) as EXGRIDLib_TLB.Column).Def[EXGRIDLib_TLB.exHeaderPaddingLeft] := OleVariant(18); with (IUnknown(Columns.Add('Padding-Right')) as EXGRIDLib_TLB.Column) do begin Def[EXGRIDLib_TLB.exHeaderPaddingRight] := OleVariant(18); HeaderAlignment := EXGRIDLib_TLB.RightAlignment; end; EndUpdate(); end |
727 |
Do you have any plans to add cell spacing and cell padding to the cells
with Grid1 do begin BeginUpdate(); DrawGridLines := EXGRIDLib_TLB.exRowLines; with (IUnknown(Columns.Add('Padding-Left')) as EXGRIDLib_TLB.Column) do begin Def[EXGRIDLib_TLB.exCellHasCheckBox] := OleVariant(True); Def[EXGRIDLib_TLB.exCellPaddingLeft] := OleVariant(18); end; (IUnknown(Columns.Add('No-Padding')) as EXGRIDLib_TLB.Column).Def[EXGRIDLib_TLB.exCellHasCheckBox] := OleVariant(True); (IUnknown(Columns.Add('Empty')) as EXGRIDLib_TLB.Column).Position := 0; with Items do begin CellValue[OleVariant(AddItem('Item A.1')),OleVariant(1)] := 'Item A.2'; CellValue[OleVariant(AddItem('Item B.1')),OleVariant(1)] := 'Item B.2'; CellValue[OleVariant(AddItem('Item C.1')),OleVariant(1)] := 'Item C.2'; end; EndUpdate(); end |
726 |
Is it possible to change the height for all items at once
with Grid1 do begin BeginUpdate(); LinesAtRoot := EXGRIDLib_TLB.exLinesAtRoot; Columns.Add('Items'); with Items do begin h := AddItem('Root 1'); InsertItem(h,Null,'Child 1'); InsertItem(h,Null,'Child 2'); h := AddItem('Root 2'); InsertItem(h,Null,'Child 1'); InsertItem(h,Null,'Child 2'); ExpandItem[0] := True; end; EndUpdate(); DefaultItemHeight := 12; Items.ItemHeight[0] := 12; end |
725 |
Can I display somehow the filter just on the top of the list, with an editor associated to each column
// Change event - Occurs when the user changes the cell's content. procedure TForm1.Grid1Change(ASender: TObject; Item : HITEM;ColIndex : Integer;var NewValue : OleVariant); begin with Grid1 do begin OutputDebugString( 'Locked:' ); OutputDebugString( Items.IsItemLocked[Item] ); with Columns.Item[OleVariant(ColIndex)] do begin Filter := NewValue; FilterType := EXGRIDLib_TLB.exPattern; end; ApplyFilter(); end end; // MouseUp event - Occurs when the user releases a mouse button. procedure TForm1.Grid1MouseUp(ASender: TObject; Button : Smallint;Shift : Smallint;X : Integer;Y : Integer); begin with Grid1 do begin Edit(Items.LockedItem[EXGRIDLib_TLB.exTop,0]); end end; with Grid1 do begin ColumnAutoResize := False; ScrollBySingleLine := True; ContinueColumnScroll := False; rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset); with rs do begin Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb',3,3,Null); end; DataSource := (IUnknown(rs) as ADODB_TLB.Recordset); with Items do begin LockedItemCount[EXGRIDLib_TLB.exTop] := 2; h := LockedItem[EXGRIDLib_TLB.exTop,0]; CellEditor[OleVariant(h),OleVariant(0)].EditType := EXGRIDLib_TLB.EditType; h := LockedItem[EXGRIDLib_TLB.exTop,1]; ItemHeight[h] := 4; ItemDivider[h] := 0; SelectableItem[h] := False; end; end |
724 |
Is it possible to display information about the firing events
|
723 |
How can I change the layout of my columns when using the exCRD
with Grid1 do begin BeginUpdate(); DrawGridLines := EXGRIDLib_TLB.exRowLines; DefaultItemHeight := 36; with Columns do begin with (IUnknown(Add('Column1')) as EXGRIDLib_TLB.Column) do begin Visible := False; Editor.EditType := EXGRIDLib_TLB.EditType; end; with (IUnknown(Add('Column2')) as EXGRIDLib_TLB.Column) do begin Visible := False; Editor.EditType := EXGRIDLib_TLB.EditType; end; (IUnknown(Add('Column3')) as EXGRIDLib_TLB.Column).Visible := False; with (IUnknown(Add('FormatLevel')) as EXGRIDLib_TLB.Column) do begin FormatLevel := '(0/1),2'; Def[EXGRIDLib_TLB.exCellFormatLevel] := OleVariant(FormatLevel); end; end; with Items do begin h := AddItem('Cell 1.1'); CellValue[OleVariant(h),OleVariant(1)] := 'Cell 1.2'; CellValue[OleVariant(h),OleVariant(2)] := 'Cell 1.3'; h := AddItem('Cell 2.1'); CellValue[OleVariant(h),OleVariant(1)] := 'Cell 2.2'; CellValue[OleVariant(h),OleVariant(2)] := 'Cell 2.3'; end; EndUpdate(); end |
722 |
Is it possible to scroll the control's content by clicking and moving the mouse up or down
with Grid1 do begin BeginUpdate(); ColumnAutoResize := False; ContinueColumnScroll := False; rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset); with rs do begin Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb',3,3,Null); end; DataSource := (IUnknown(rs) as ADODB_TLB.Recordset); AutoDrag := EXGRIDLib_TLB.exAutoDragScroll; EndUpdate(); end |
721 |
How can copy and paste the selection to Microsoft Word, any OLE compliant application, as a snapshot
with Grid1 do begin BeginUpdate(); VisualAppearance.Add(1,'c:\exontrol\images\normal.ebn'); HTMLPicture['p1'] := 'c:\exontrol\images\card.png'; HTMLPicture['p2'] := 'c:\exontrol\images\sun.png'; AutoDrag := EXGRIDLib_TLB.exAutoDragCopySnapShot; LinesAtRoot := EXGRIDLib_TLB.exNoLinesAtRoot; HasLines := EXGRIDLib_TLB.exThinLine; ShowFocusRect := False; DefaultItemHeight := 26; Columns.Add('Task'); with Items do begin h := AddItem('<img>p1:32</img>Group 1'); CellValueFormat[OleVariant(h),OleVariant(0)] := EXGRIDLib_TLB.exHTML; ItemDivider[h] := 0; ItemBold[h] := True; h1 := InsertItem(h,Null,'Task 1'); h2 := InsertItem(h,Null,'Task 2'); h3 := InsertItem(h,Null,'Task 3'); h := AddItem('<img>p2:32</img>Group 2'); CellValueFormat[OleVariant(h),OleVariant(0)] := EXGRIDLib_TLB.exHTML; ItemBold[h] := True; ItemDivider[h] := 0; h1 := InsertItem(h,Null,'Task'); ExpandItem[0] := True; end; EndUpdate(); end |
720 |
How can copy and paste the selection to Microsoft Word, any OLE compliant application, as a image
with Grid1 do begin BeginUpdate(); HTMLPicture['p1'] := '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' + 'kgignAiBXAhAwBBCAg=='; HTMLPicture['p2'] := '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' + 'LZnCEAAgZAABJBFBOBECuBCBgCCEBA=='; var_HTMLPicture := HTMLPicture['aka1']; HeaderHeight := 24; DefaultItemHeight := 48; DrawGridLines := EXGRIDLib_TLB.exRowLines; GridLineColor := RGB(240,240,240); SelBackMode := EXGRIDLib_TLB.exTransparent; ColumnAutoResize := False; ContinueColumnScroll := False; rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset); with rs do begin Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb',3,3,Null); end; DataSource := (IUnknown(rs) as ADODB_TLB.Recordset); Columns.Item[OleVariant(0)].Def[EXGRIDLib_TLB.exCellValueFormat] := OleVariant(1); Columns.Item[OleVariant(0)].FormatColumn := 'value + ` <img>p` + (1 + (value mod 3 ) ) + `</img>`'; Columns.Item[OleVariant(0)].Width := 112; Columns.Item[OleVariant(1)].Def[EXGRIDLib_TLB.exCellHasCheckBox] := OleVariant(1); Columns.Item[OleVariant(2)].LevelKey := '1'; Columns.Item[OleVariant(3)].LevelKey := '1'; Columns.Item[OleVariant(4)].LevelKey := '1'; AutoDrag := EXGRIDLib_TLB.exAutoDragCopyImage; SingleSel := False; with Items do begin h := ItemByIndex[1]; SelectItem[h] := True; h := ItemByIndex[2]; SelectItem[h] := True; h := ItemByIndex[3]; SelectItem[h] := True; LockedItemCount[EXGRIDLib_TLB.exBottom] := 1; h := LockedItem[EXGRIDLib_TLB.exBottom,0]; CellValue[OleVariant(h),OleVariant(1)] := '<font ;16>Click the selection and <b>wait to start dragging</b>, and then drop to Microsoft Word, ...'; CellSingleLine[OleVariant(h),OleVariant(1)] := EXGRIDLib_TLB.exCaptionWordWrap; CellValueFormat[OleVariant(h),OleVariant(1)] := EXGRIDLib_TLB.exHTML; CellHAlignment[OleVariant(h),OleVariant(1)] := EXGRIDLib_TLB.CenterAlignment; ItemDivider[h] := 1; ItemDividerLineAlignment[h] := EXGRIDLib_TLB.DividerTop; end; EndUpdate(); end |
719 |
How can copy and paste the selection to Microsoft Word, Excel or any OLE compliant application, as a text
with Grid1 do begin BeginUpdate(); ColumnAutoResize := False; ContinueColumnScroll := False; rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset); with rs do begin Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb',3,3,Null); end; DataSource := (IUnknown(rs) as ADODB_TLB.Recordset); Columns.Item[OleVariant(2)].LevelKey := '1'; Columns.Item[OleVariant(3)].LevelKey := '1'; Columns.Item[OleVariant(4)].LevelKey := '1'; AutoDrag := EXGRIDLib_TLB.exAutoDragCopyText; SingleSel := False; with Items do begin h := ItemByIndex[1]; SelectItem[h] := True; h := ItemByIndex[3]; SelectItem[h] := True; h := ItemByIndex[4]; SelectItem[h] := True; h := ItemByIndex[5]; SelectItem[h] := True; LockedItemCount[EXGRIDLib_TLB.exBottom] := 1; h := LockedItem[EXGRIDLib_TLB.exBottom,0]; CellValue[OleVariant(h),OleVariant(0)] := '<font ;16>Click the selection and <b>wait to start dragging</b>, and then drop to Microsoft Word, Excel, ...'; CellSingleLine[OleVariant(h),OleVariant(0)] := EXGRIDLib_TLB.exCaptionWordWrap; CellValueFormat[OleVariant(h),OleVariant(0)] := EXGRIDLib_TLB.exHTML; CellHAlignment[OleVariant(h),OleVariant(0)] := EXGRIDLib_TLB.CenterAlignment; ItemDivider[h] := 0; ItemDividerLineAlignment[h] := EXGRIDLib_TLB.DividerTop; end; EndUpdate(); end |
718 |
Is it possible to change the indentation during the drag and drop
with Grid1 do begin BeginUpdate(); VisualAppearance.Add(1,'c:\exontrol\images\normal.ebn'); AutoDrag := EXGRIDLib_TLB.exAutoDragPositionAny; LinesAtRoot := EXGRIDLib_TLB.exNoLinesAtRoot; HasLines := EXGRIDLib_TLB.exSolidLine; HasButtons := EXGRIDLib_TLB.exWPlus; ShowFocusRect := False; SelBackMode := EXGRIDLib_TLB.exTransparent; Columns.Add('Task'); with Items do begin h := AddItem('Group 1'); ItemBold[h] := True; ItemDivider[h] := 0; h1 := InsertItem(h,Null,'Task 1'); h2 := InsertItem(h1,Null,'Task 2'); h2 := InsertItem(h1,Null,'Task 3'); h3 := InsertItem(h,Null,'Task 3'); ExpandItem[h] := True; ExpandItem[h1] := True; h := AddItem('Group 2'); ItemBold[h] := True; ItemDivider[h] := 0; LockedItemCount[EXGRIDLib_TLB.exBottom] := 1; h := LockedItem[EXGRIDLib_TLB.exBottom,0]; CellValue[OleVariant(h),OleVariant(0)] := 'Click a row, and move by dragging <b>up, down</b> to change the row''s parent or <b>left,right</b> to increase or decrease the in' + 'dentation.'; CellSingleLine[OleVariant(h),OleVariant(0)] := EXGRIDLib_TLB.exCaptionWordWrap; CellValueFormat[OleVariant(h),OleVariant(0)] := EXGRIDLib_TLB.exHTML; end; EndUpdate(); end |
717 |
Is it possible to allow moving an item to another, but keeping its indentation
with Grid1 do begin BeginUpdate(); VisualAppearance.Add(1,'c:\exontrol\images\normal.ebn'); AutoDrag := EXGRIDLib_TLB.exAutoDragPositionKeepIndent; LinesAtRoot := EXGRIDLib_TLB.exNoLinesAtRoot; HasLines := EXGRIDLib_TLB.exThinLine; ShowFocusRect := False; Columns.Add('Task'); with Items do begin h := AddItem('Group 1'); ItemDivider[h] := 0; ItemBold[h] := True; h1 := InsertItem(h,Null,'Task 1'); h2 := InsertItem(h,Null,'Task 2'); h3 := InsertItem(h,Null,'Task 3'); ExpandItem[h] := True; h := AddItem('Group 2'); ItemBold[h] := True; ItemDivider[h] := 0; end; EndUpdate(); end |
716 |
How can I change the row's position to another, by drag and drop. Is it possible
with Grid1 do begin BeginUpdate(); VisualAppearance.Add(1,'c:\exontrol\images\normal.ebn'); AutoDrag := EXGRIDLib_TLB.exAutoDragPosition; Columns.Add('Task'); with Items do begin h1 := AddItem('Task 1'); h2 := AddItem('Task 2'); h3 := AddItem('Task 3'); end; EndUpdate(); end |
715 |
Is it possible background color displayed when the mouse passes over an item
with Grid1 do begin BeginUpdate(); Columns.Add('Def'); HotBackColor := RGB(0,0,128); HotForeColor := RGB(255,255,255); with Items do begin AddItem('Item A'); AddItem('Item B'); AddItem('Item C'); end; EndUpdate(); end |
714 |
My development environment does not have any Object,GetOcx,DefaultDispatch,GetControlUnknown,nativeObject, ... property, is there any alternative I can pass the component to PrintExt so I can get printed
with Grid1 do begin BeginUpdate(); Columns.Add('Task'); with Items do begin AddItem('Task 1'); AddItem('Task 2'); end; EndUpdate(); Template := 'Dim p;p = CreateObject(`Exontrol.Print`);p.PrintExt = Me;p.AutoRelease = False;p.Preview();'; end |
713 |
My development environment does not have any Object,GetOcx,DefaultDispatch,GetControlUnknown,nativeObject, ... property, is there any alternative I can pass the component to PrintExt so I can get printed
with Grid1 do begin BeginUpdate(); Columns.Add('Default'); with Items do begin AddItem('Item 1'); AddItem('Task 2'); end; EndUpdate(); with (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('Exontrol.Print'))) as EXPRINTLib_TLB.Print) do begin PrintExt := (IUnknown(Grid1.ExecuteTemplate('me')) as EXGRIDLib_TLB.Grid); Preview(); end; end |
712 |
How can I apply the same ConditionalFormat on more than 1(one) column (multiple columns and not on item)
with Grid1 do begin BeginUpdate(); with ConditionalFormats.Add('1','K1') do begin BackColor := $ff; ApplyTo := EXGRIDLib_TLB.FormatApplyToEnum($1); end; with ConditionalFormats.Add('1','K2') do begin BackColor := $ff; ApplyTo := EXGRIDLib_TLB.FormatApplyToEnum($2); end; MarkSearchColumn := False; DrawGridLines := EXGRIDLib_TLB.exRowLines; with Columns do begin Add('Column 1'); Add('Column 2'); Add('Column 3'); end; with Items do begin AddItem(Null); AddItem(Null); AddItem(Null); end; EndUpdate(); end |
711 |
Is it possible to add new records and see them in the control's view using the DataSource
// ButtonClick event - Occurs when user clicks on the cell's button. procedure TForm1.Grid1ButtonClick(ASender: TObject; Item : HITEM;ColIndex : Integer;Key : OleVariant); begin with Grid1 do begin with (IUnknown(DataSource) as ADODB_TLB.Recordset) do begin AddNew('Task','New-Task'); Update(Null,Null); end; end end; // Error event - Fired when an internal error occurs. procedure TForm1.Grid1Error(ASender: TObject; Error : Integer;Description : WideString); begin with Grid1 do begin OutputDebugString( Description ); end end; with Grid1 do begin rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADODB.Recordset'))) as ADODB_TLB.Recordset); with rs.Fields do begin Append('Task',8,Null,Null,Null); Append('Start',7,Null,Null,Null); Append('End',7,Null,Null,Null); end; rs.Open(Null,Null,Null,Null,Null); DrawGridLines := EXGRIDLib_TLB.exRowLines; DetectAddNew := True; DetectDelete := True; DataSource := (IUnknown(rs) as ADODB_TLB.Recordset); with Items do begin LockedItemCount[EXGRIDLib_TLB.exTop] := 1; h := LockedItem[EXGRIDLib_TLB.exTop,0]; ItemDivider[h] := 0; ItemHeight[h] := 22; CellValue[OleVariant(h),OleVariant(0)] := 'AddNew'; CellHasButton[OleVariant(h),OleVariant(0)] := True; CellHAlignment[OleVariant(h),OleVariant(0)] := EXGRIDLib_TLB.CenterAlignment; end; end |
710 |
How can I initiate an OLE Drag and Drop operation in /COM version
// OLEStartDrag event - Occurs when the OLEDrag method is called. procedure TForm1.Grid1OLEStartDrag(ASender: TObject; Data : IExDataObject;var AllowedEffects : Integer); begin // Data.SetData("your data to drag") with Grid1 do begin AllowedEffects := 2; end end; with Grid1 do begin BeginUpdate(); Columns.Add('Default'); with Items do begin AddItem('Item 1'); AddItem('Item 2'); AddItem('Item 3'); AddItem('Item 4'); AddItem('Item 5'); end; OLEDropMode := EXGRIDLib_TLB.exOLEDropManual; EndUpdate(); end |
709 |
How can I find the order of the events
// AfterExpandItem event - Fired after an item is expanded (collapsed). procedure TForm1.Grid1AfterExpandItem(ASender: TObject; Item : HITEM); begin with Grid1 do begin OutputDebugString( 'AfterExpandItem' ); OutputDebugString( Item ); end end; // AnchorClick event - Occurs when an anchor element is clicked. procedure TForm1.Grid1AnchorClick(ASender: TObject; AnchorID : WideString;Options : WideString); begin with Grid1 do begin OutputDebugString( 'AnchorClick' ); OutputDebugString( AnchorID ); OutputDebugString( Options ); end end; // BeforeExpandItem event - Fired before an item is about to be expanded (collapsed). procedure TForm1.Grid1BeforeExpandItem(ASender: TObject; Item : HITEM;var Cancel : OleVariant); begin with Grid1 do begin OutputDebugString( 'BeforeExpandItem' ); OutputDebugString( Item ); end end; // ButtonClick event - Occurs when user clicks on the cell's button. procedure TForm1.Grid1ButtonClick(ASender: TObject; Item : HITEM;ColIndex : Integer;Key : OleVariant); begin with Grid1 do begin OutputDebugString( 'ButtonClick' ); OutputDebugString( Item ); OutputDebugString( ColIndex ); OutputDebugString( Key ); end end; // CellImageClick event - Fired after the user clicks on the image's cell area. procedure TForm1.Grid1CellImageClick(ASender: TObject; Item : HITEM;ColIndex : Integer); begin with Grid1 do begin OutputDebugString( 'CellImageClick' ); OutputDebugString( Item ); OutputDebugString( ColIndex ); end end; // CellStateChanged event - Fired after cell's state has been changed. procedure TForm1.Grid1CellStateChanged(ASender: TObject; Item : HITEM;ColIndex : Integer); begin with Grid1 do begin OutputDebugString( 'CellStateChanged' ); OutputDebugString( Item ); OutputDebugString( ColIndex ); end end; // Change event - Occurs when the user changes the cell's content. procedure TForm1.Grid1Change(ASender: TObject; Item : HITEM;ColIndex : Integer;var NewValue : OleVariant); begin with Grid1 do begin OutputDebugString( 'Change' ); OutputDebugString( Item ); OutputDebugString( ColIndex ); OutputDebugString( NewValue ); end end; // Click event - Occurs when the user presses and then releases the left mouse button over the grid control. procedure TForm1.Grid1Click(ASender: TObject; ); begin with Grid1 do begin OutputDebugString( 'Click' ); end end; // ColumnClick event - Fired after the user clicks on column's header. procedure TForm1.Grid1ColumnClick(ASender: TObject; Column : IColumn); begin with Grid1 do begin OutputDebugString( 'ColumnClick' ); end end; // DblClick event - Occurs when the user dblclk the left mouse button over an object. procedure TForm1.Grid1DblClick(ASender: TObject; Shift : Smallint;X : Integer;Y : Integer); begin with Grid1 do begin OutputDebugString( 'DblClick' ); OutputDebugString( Shift ); OutputDebugString( X ); OutputDebugString( Y ); Edit(Null); end end; // Edit event - Occurs just before editing the focused cell. procedure TForm1.Grid1Edit(ASender: TObject; Item : HITEM;ColIndex : Integer;var Cancel : WordBool); begin with Grid1 do begin OutputDebugString( 'Edit' ); OutputDebugString( Item ); OutputDebugString( ColIndex ); end end; // EditClose event - Occurs when the edit operation ends. procedure TForm1.Grid1EditClose(ASender: TObject; ); begin with Grid1 do begin OutputDebugString( 'EditClose' ); end end; // EditOpen event - Occurs when the edit operation starts. procedure TForm1.Grid1EditOpen(ASender: TObject; ); begin with Grid1 do begin OutputDebugString( 'EditOpen' ); end end; // FilterChange event - Occurs when filter was changed. procedure TForm1.Grid1FilterChange(ASender: TObject; ); begin with Grid1 do begin OutputDebugString( 'FilterChange' ); end end; // FilterChanging event - Notifies your application that the filter is about to change. procedure TForm1.Grid1FilterChanging(ASender: TObject; ); begin with Grid1 do begin OutputDebugString( 'FilterChanging' ); end end; // FocusChanged event - Occurs when a new cell is focused. procedure TForm1.Grid1FocusChanged(ASender: TObject; ); begin with Grid1 do begin OutputDebugString( 'FocusChanged' ); end end; // KeyDown event - Occurs when the user presses a key while an object has the focus. procedure TForm1.Grid1KeyDown(ASender: TObject; var KeyCode : Smallint;Shift : Smallint); begin with Grid1 do begin OutputDebugString( 'KeyDown' ); OutputDebugString( KeyCode ); OutputDebugString( Shift ); end end; // KeyPress event - Occurs when the user presses and releases an ANSI key. procedure TForm1.Grid1KeyPress(ASender: TObject; var KeyAscii : Smallint); begin with Grid1 do begin OutputDebugString( 'KeyPress' ); OutputDebugString( KeyAscii ); end end; // KeyUp event - Occurs when the user releases a key while an object has the focus. procedure TForm1.Grid1KeyUp(ASender: TObject; var KeyCode : Smallint;Shift : Smallint); begin with Grid1 do begin OutputDebugString( 'KeyUp' ); OutputDebugString( KeyCode ); OutputDebugString( Shift ); end end; // LayoutChanged event - Occurs when column's position or column's size is changed. procedure TForm1.Grid1LayoutChanged(ASender: TObject; ); begin with Grid1 do begin OutputDebugString( 'LayoutChanged' ); end end; // MouseDown event - Occurs when the user presses a mouse button. procedure TForm1.Grid1MouseDown(ASender: TObject; Button : Smallint;Shift : Smallint;X : Integer;Y : Integer); begin with Grid1 do begin OutputDebugString( 'MouseDown' ); OutputDebugString( Button ); OutputDebugString( Shift ); OutputDebugString( X ); OutputDebugString( Y ); end end; // MouseMove event - Occurs when the user moves the mouse. procedure TForm1.Grid1MouseMove(ASender: TObject; Button : Smallint;Shift : Smallint;X : Integer;Y : Integer); begin end; // MouseUp event - Occurs when the user releases a mouse button. procedure TForm1.Grid1MouseUp(ASender: TObject; Button : Smallint;Shift : Smallint;X : Integer;Y : Integer); begin with Grid1 do begin OutputDebugString( 'MouseUp' ); OutputDebugString( Button ); OutputDebugString( Shift ); OutputDebugString( X ); OutputDebugString( Y ); end end; // OffsetChanged event - Occurs when the scroll position has been changed. procedure TForm1.Grid1OffsetChanged(ASender: TObject; Horizontal : WordBool;NewVal : Integer); begin with Grid1 do begin OutputDebugString( 'OffsetChanged' ); OutputDebugString( Horizontal ); OutputDebugString( NewVal ); end end; // OversizeChanged event - Occurs when the right range of the scroll has been changed. procedure TForm1.Grid1OversizeChanged(ASender: TObject; Horizontal : WordBool;NewVal : Integer); begin with Grid1 do begin OutputDebugString( 'OversizeChanged' ); OutputDebugString( Horizontal ); OutputDebugString( NewVal ); end end; // RClick event - Fired when right mouse button is clicked procedure TForm1.Grid1RClick(ASender: TObject; ); begin with Grid1 do begin OutputDebugString( 'RClick' ); end end; // ScrollButtonClick event - Occurs when the user clicks a button in the scrollbar. procedure TForm1.Grid1ScrollButtonClick(ASender: TObject; ScrollBar : ScrollBarEnum;ScrollPart : ScrollPartEnum); begin with Grid1 do begin OutputDebugString( 'ScrollButtonClick' ); OutputDebugString( ScrollBar ); OutputDebugString( ScrollPart ); end end; // SelectionChanged event - Fired after a new item has been selected. procedure TForm1.Grid1SelectionChanged(ASender: TObject; ); begin with Grid1 do begin OutputDebugString( 'SelectionChanged' ); end end; // Sort event - Fired when the control sorts a column. procedure TForm1.Grid1Sort(ASender: TObject; ); begin with Grid1 do begin OutputDebugString( 'Sort' ); end end; with Grid1 do begin BeginUpdate(); Images('gBJJgBAIEAAGAEGCAAhb/hz/EIAh8Tf5CJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTql' + 'Vq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1BAmBhOCwMGwuDw2ExWJxmIx2HyGLv+TlykUCgABmGYzzObzuczWcKujzOa0ug02hz' + '+r1Wtz2qoCA2QAYG1yk02YA3NMy2Yh8Sh202zx4gA4jxADM5XG4vHACy6ESdjM6XUZiZTMS5bwZSm1c83+yQHCYHk81Q8O7qW18u/9NG3vAf/y83u4PQWQA0ZVADq/z6' + 'um6rkuw7TqH+5bYJu+z5vE8z2N02cGweoDfwfCrbQfBqkNzBb6QfDLxp6+LlOs5cSOTEzlm7FYACFFwADvGIAGvGjzOu7MbwHHECQSmUOvS8cGwk20gQc2ycQs4MLvLD' + '8MNtDSfyS+cmyZJzywa96axzDsTw6/x1AAL8xRbF8Vm65jkH/AL8QFNTqR6lsfuDIb2uDKTzTo88FTtIk+PK3SNRDKiew5JVDSnK08NnOUGRClkt0PFEDUjMwAENS4AM' + '2zj4udNznujT1PTgjdGQg8c71RPtESvCL1JrO8lozQUj1nP6d1TKtc0U8dS1jCaNRzGhrxnGthWJYdjUrYwc2ZMMx2NB8czZNk4VLPMstzXD6Q6mltVjPNAT0m1CvnDt' + 'BxBXlI3PRKNzZDtjQ6cd5TQ/TSU0/r/udC0A1Ez1SUja8/QhWVavrSLfpxWNzXZR2CygmVtXXVl03Lg+BV+lV3UjeDgzEL4AXkcb6Pje5LZNDzhuLfrOX/RtT0TQbc5l' + 'ENSvBi2K5xlFdUHhN1ZhJ9F59WybOU7NjWTFkvxhGT9zIIQAWYHIABFqmnABSsT0HUaNYlI1dZmjNuUDRybzvIVWyDoOc54n8Oyxm9Ta9cSUaLbbg44+b4xiO9nY/pt7' + '3u38Tuc52tpdruYxDVyUbBV+gYpu2c7PyGMKTt21cjnW6OvzO8PppUvP/Ljlt/wt/Vvn+v8V1eCdbgaa7fnMi8vyD0TnzGEJXyp/wJ3js98iXe+F3/hwGM3jeQZjTeUz' + 'nmOT5bTKJyqYcbm2c5bzXpqvsWw4FUkCO473wgB8cD9/znzO14n1+D4/efcTP4fl5+WKvxbbptmqV+B/ni/68R4514AvxeTAR50B3oPNei/iBhFgfErgeR4kBIiSAAJK' + 'SiC7PT5wMKIQ4fwfyHDzg2PwD4/B/jgg2PgA48AfjgB+RkeAARwAPGAA8jI4AADgAOMAAZGTyw6YbDkA7ZDaAHgxDyCxGgBw8EBBmJcS4LjAATDweBGoqjgAGP4jQ/Ac' + 'jwAHBsiQex8gPH+MF7pDxxkB'); DrawGridLines := EXGRIDLib_TLB.exAllLines; LinesAtRoot := EXGRIDLib_TLB.exLinesAtRoot; GridLineStyle := EXGRIDLib_TLB.exGridLinesHDash; AutoEdit := False; ExpandOnDblClick := False; with Columns do begin with (IUnknown(Add('Column')) as EXGRIDLib_TLB.Column) do begin DisplayFilterButton := True; Def[EXGRIDLib_TLB.exCellHasCheckBox] := OleVariant(True); Editor.EditType := EXGRIDLib_TLB.EditType; end; with (IUnknown(Add('Button')) as EXGRIDLib_TLB.Column) do begin AllowSizing := False; Width := 18; Def[EXGRIDLib_TLB.exCellHasButton] := OleVariant(True); end; end; with Items do begin h := AddItem('parent'); CellImage[OleVariant(h),OleVariant(0)] := 1; InsertItem(h,'','child'); ExpandItem[h] := True; end; EndUpdate(); end |
708 |
Is it possible to select a column instead sorting it
// ColumnClick event - Fired after the user clicks on column's header. procedure TForm1.Grid1ColumnClick(ASender: TObject; Column : IColumn); begin // Column.Selected = True with Grid1 do begin BeginUpdate(); Columns.Item[OleVariant(0)].Selected := False; Columns.Item[OleVariant(1)].Selected := False; Items.SelectAll(); EndUpdate(); end end; with Grid1 do begin BeginUpdate(); MarkSearchColumn := False; ShowFocusRect := False; SingleSel := False; FullRowSelect := EXGRIDLib_TLB.exRectSel; SortOnClick := EXGRIDLib_TLB.exNoSort; with Columns do begin Add('Column1'); Add('Column2'); end; with Items do begin CellValue[OleVariant(AddItem('One')),OleVariant(1)] := 'Three'; CellValue[OleVariant(AddItem('Two')),OleVariant(1)] := 'Four'; SelectAll(); end; EndUpdate(); end |
707 |
Is it possible to display empty strings for 0 values
with Grid1 do begin with (IUnknown(Columns.Add('Currency')) as EXGRIDLib_TLB.Column) do begin FormatColumn := 'dbl(value) ? currency(dbl(value)) : ``'; with Editor do begin EditType := EXGRIDLib_TLB.EditType; Numeric := EXGRIDLib_TLB.exFloat; end; end; with Items do begin AddItem(OleVariant(1.23)); AddItem(OleVariant(2.34)); AddItem(OleVariant(0)); AddItem(OleVariant(10000.99)); end; end |
706 |
Is it possible to display empty strings for 0 values
with Grid1 do begin Columns.Add('Number'); (IUnknown(Columns.Add('Currency')) as EXGRIDLib_TLB.Column).ComputedField := '%0 ? currency(%0) : ``'; with Items do begin AddItem(OleVariant(1.23)); AddItem(OleVariant(2.34)); AddItem(OleVariant(0)); AddItem(OleVariant(10000.99)); end; end |
705 |
How can I get the list of items as they are displayed
with Grid1 do begin BeginUpdate(); BackColorAlternate := RGB(240,240,240); Columns.Add('Names'); with Items do begin AddItem('Mantel'); AddItem('Mechanik'); AddItem('Motor'); AddItem('Murks'); AddItem('Märchen'); AddItem('Möhren'); AddItem('Mühle'); end; Columns.Item[OleVariant(0)].SortOrder := EXGRIDLib_TLB.SortAscending; EndUpdate(); OutputDebugString( GetItems(OleVariant(1)) ); end |
704 |
Is it possible to add new rows, as I type like in Excel
// EditClose event - Occurs when the edit operation ends. procedure TForm1.Grid1EditClose(ASender: TObject; ); begin with Grid1 do begin Items.AddItem(''); end end; with Grid1 do begin BeginUpdate(); AutoEdit := True; (IUnknown(Columns.Add('Default')) as EXGRIDLib_TLB.Column).Editor.EditType := EXGRIDLib_TLB.EditType; FullRowSelect := EXGRIDLib_TLB.exColumnSel; Items.AddItem(''); DrawGridLines := EXGRIDLib_TLB.exAllLines; ScrollBars := EXGRIDLib_TLB.exDisableBoth; EndUpdate(); end |
703 |
Is posible to reduce the size of the picture to be shown in the column's caption
with Grid1 do begin BeginUpdate(); HTMLPicture['pic1'] := 'c:\exontrol\images\zipdisk.gif'; HeaderHeight := 48; (IUnknown(Columns.Add('DefaultSize')) as EXGRIDLib_TLB.Column).HTMLCaption := 'Default-Size <img>pic1</img> Picture'; (IUnknown(Columns.Add('CustomSize')) as EXGRIDLib_TLB.Column).HTMLCaption := 'Custom-Size <img>pic1:16</img> Picture'; EndUpdate(); end |
702 |
How can I change the color, font, bold etc for the items/cells in the same column or for the entire column
with Grid1 do begin BeginUpdate(); with ConditionalFormats.Add('1',Null) do begin Bold := True; ForeColor := $ff; ApplyTo := EXGRIDLib_TLB.FormatApplyToEnum($1); end; Columns.Add('C1'); with (IUnknown(Columns.Add('C2')) as EXGRIDLib_TLB.Column) do begin HeaderBold := True; HTMLCaption := '<fgcolor=FF0000>C2'; end; with Items do begin CellValue[OleVariant(AddItem(OleVariant(10))),OleVariant(1)] := OleVariant(11); CellValue[OleVariant(AddItem(OleVariant(12))),OleVariant(1)] := OleVariant(13); end; EndUpdate(); end |
701 |
How can I filter the check-boxes (method 2)
with Grid1 do begin with (IUnknown(Columns.Add('Check')) as EXGRIDLib_TLB.Column) do begin with Editor do begin EditType := EXGRIDLib_TLB.CheckValueType; Option[EXGRIDLib_TLB.exCheckValue2] := OleVariant(1); end; DisplayFilterButton := True; DisplayFilterPattern := False; CustomFilter := 'checked||-1|||unchecked||0'; end; with Items do begin AddItem(OleVariant(True)); AddItem(OleVariant(True)); AddItem(OleVariant(False)); AddItem(OleVariant(True)); AddItem(OleVariant(False)); AddItem(OleVariant(True)); AddItem(OleVariant(False)); end; end |